问题标签 [ginkgo]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
119 浏览

asynchronous - 使用流处理进行异步测试

我对 Go 很陌生,所以我可能会误解 Go 的异步/流处理的一些基础知识,但是这里有......

我正在尝试在我编写的处理流的函数上使用银杏编写一些测试。

处理端从文件中读取以换行符分隔的文本,直到遇到一个特殊的分隔符行,此时它会尝试将文本解析为 JSON。代码如下所示:

我的测试看起来像这样

不幸的是,这会产生一个 JSON 解析错误,因为它试图解析一个空字符串。我假设我的问题是我在告诉 ParseConfig() 函数在该字符串上侦听数据之前在流上发送字符串?但我并不完全清楚如何重构它以使用正确的 go 例程首先侦听数据然后发送它。

我看到的一些潜在解决方案是围绕“通道”的使用(我不熟悉),但我担心这一需求可能不值得进行重大重构以引入全新的并发范式。

谢谢!

0 投票
2 回答
4833 浏览

go - 用 go 和 ginkgo 测试标准输出

在这里,我正在尝试在 go 命令行应用程序上执行 BDD 的第一步。我正在使用 Ginkgo,它包装了 testing.go,让你做更具表现力的 BDD。https://github.com/onsi/ginkgo

我在阅读标准输出以对其进行断言时遇到问题。

发现pkg/testing示例在运行之前对输出进行存根,但我找不到读取该输出的方法:http: //golang.org/src/pkg/testing/example.go

这就是我想做的:

cli.go

cli_test.go

0 投票
1 回答
706 浏览

testing - 用银杏麻烦测试两个字符串

首先我想告诉你,我是个新手,我来自 Python。话虽如此,我可以继续解决我的问题。我遇到以下问题:

这是代码:

这是我的简单测试:

如果有人能告诉我为什么这不起作用,那就太好了!!!

0 投票
3 回答
3210 浏览

go - 如何设置 Ginkgo 测试套件?

我继承了一个 Go 项目,该项目由许多通用文件、一个库、两个可执行文件和理论上的测试套件组成。测试套件是在事后编写的。但我不喜欢我发现的唯一设置方法是相当难吃

我正在使用 Ginkgo,这是我的起始目录结构

  • 组件1/组件1.go
  • 组件2/组件2.go
  • cmd1/cmd1.go
  • cmd2/cmd2.go
  • project_suite_test.go
  • component1_test.go

每个 cmd?.go 文件都会被编译成一个单独的可执行文件。

我想要的是一个多文件测试套件,通常每个组件一个文件。我应该把文件放在哪里,这样go test才能找到并运行所有文件,而不会将它们留在项目的根目录中?

0 投票
1 回答
337 浏览

testing - 是否可以使用 Gomega 模拟示例测试?

我有一些 go 测试我想更新以使用 Ginkgo 进行 BDD 样式测试。问题是,服务器使用 stdout 和 stderr 进行日志记录,许多测试使用 Go 内置的“示例”测试框架,如下所示:

我想使用 Ginkgo 和 Gomega 来断言这些被打印到标准输出,但是没有内置的匹配器可以告诉我这样做。Gomega 确实提供了一个gbytes包,但没有关于如何将 gbytes.Buffer “附加”到 stdout 或 stderr 的文档。是否有我可以使用的自定义匹配器?

0 投票
0 回答
54 浏览

google-app-engine - Go、go_appengine 和 agouti - 怎么样?

我正在用 Go 语言构建一个在 Google Appengine 上运行的小应用程序。我已经让它在本地运行,并使用 aetest 进行测试。效果很好。

我想使用 Agouti 添加 BDD 测试。我想了解的是 Agouti 如何与 aetest 一起工作。我的 Agouti 测试将启动 aetest 实例,但我无法弄清楚 a) 如何确定测试 devserver 正在哪个端口上运行(aetest.Instance 有一个方法 url() 似乎表明这一点,但该方法不出口),和b)如何告诉Agouti港口。

我想错了吗?我很乐意让 BeforeSuite 或 BeforeEach 块设置环境,但如果有其他方法,我很想听听。

谢谢。

0 投票
1 回答
1189 浏览

testing - 使用 ginkgo/gomega 测试 Go 应用时测试文件的正确结构

我的 Go 应用程序(restfull api 服务)正在增长,我决定使用测试。我的选择是银杏/Gomega。

学习网站(http://onsi.github.io/ginkgo/#getting-started-writing-your-first-test)我发现开始测试你需要

  1. 转到包裹
  2. 银杏引导

这将在包文件夹的根目录中创建文件 [your_package]_suite_test。没关系。

但是,如果我想测试一些功能或文件或包,我需要再次转到文件夹并 ginkgo 生成 [test_name] ,它将在此处创建存根测试文件。

因此,在某一时刻,我们将有很多杂乱无章的东西:我们的应用程序文件和测试文件一起放在一个文件夹中。例如 server.go、server_test.go、auth.go、auth_test.go 等。

我想searate应用程序文件和测试文件。例如,我想在根包中创建一个文件夹测试并将所有测试放在这里。所以,当我需要测试应用程序时,我可以运行 go test ./tests

将 Ginkgo/Gomega 与单独的测试文件夹一起使用是正确的模式吗?

谢谢。

0 投票
1 回答
2211 浏览

go - Golang Ginkgo BeforeSuite 没有输出

我有以下Ginkgo测试文件:

当我运行ginkgo -r -v时,测试文件运行,但BeforeSuiteandAfterSuite似乎没有:

该行2016/03/16 09:23:17 Describe显示正在运行,但andDescribe的输出在哪里?BeforeSuiteAfterSuite

我并不真正关心输出,但在我的真实测试中(不是上面的片段),数据库构建和拆除没有得到执行。

我究竟做错了什么?

0 投票
2 回答
6433 浏览

unit-testing - 在运行任何规范之前运行 Ginkgo 测试套件(BeforeSuite 设置

我正在使用 Ginkgo(和 Gomega)包对 Go(lang) Rest API 进行单元测试。

我需要使用全局设置,这应该可以通过定义来实现

然后每个规范(具体<file>_test.go)应该在这个全局设置之后运行。不幸的是,我无法做到这一点......

我的套件文件名是handlers_suite_test.go,我的第一个测试规范名称是cartContentsHandler_test.go. 在我看来,Ginkgo 按字母顺序运行测试文件,使之前cartContentsHandler_test.go运行。我对这两个文件都打了电话,不幸的是他们只是证实了我的发现...... handlers_suite_test.golog()

这真是令人不快的情况,因为我根本无法让我的测试运行......我需要确保httptest.Server在所有规范之前设置和运行数据库池连接。

您知道要做什么才能使 suite_test 作为测试规范之前的第一个文件运行吗?(我已经尝试将套件文件命名为,_suite_test.go但在这种情况下,它看起来甚至根本没有执行套件)。

我的handlers_suite_test.go

我的cartContensHandler_test.go

包 handlers_test

在 <PROJ> 根目录下,我以这种方式运行测试:

0 投票
0 回答
129 浏览

go - 为“gexec.Session”提供终端输入

我需要为exec.CommandGomega's 启动的gexec.Session.

我正在执行的命令目前正在抱怨“stty:stdin 不是终端”。如何向看起来像是来自终端的衍生进程提供输入?