对于Meteor 1.7推荐的测试框架似乎是meteortesting:mocha
。
使用Meteor 1.7.0.3,我创建了一个默认应用(meteor create my-app
),该应用具有以下测试(在test/main.js
中)
import assert from "assert";
describe("my-app", function () {
it("package.json has correct name", async function () {
const { name } = await import("../package.json");
assert.strictEqual(name, "noteit");
});
if (Meteor.isClient) {
it("client is not server", function () {
assert.strictEqual(Meteor.isServer, false);
});
}
if (Meteor.isServer) {
it("server is not client", function () {
assert.strictEqual(Meteor.isClient, false);
});
}
});
我跑了
meteor add meteortesting:mocha
meteor test --driver-package meteortesting:mocha
并通过meteortesting:mocha
@2.4.5_6在控制台中找到了它:
I20180728-12:06:37.729(2)? --------------------------------
I20180728-12:06:37.729(2)? ----- RUNNING SERVER TESTS -----
I20180728-12:06:37.729(2)? --------------------------------
I20180728-12:06:37.729(2)?
I20180728-12:06:37.730(2)?
I20180728-12:06:37.731(2)?
I20180728-12:06:37.737(2)? the server
✓ fails a test.753(2)?
I20180728-12:06:37.755(2)?
I20180728-12:06:37.756(2)?
I20180728-12:06:37.756(2)? 1 passing (26ms)
I20180728-12:06:37.756(2)?
I20180728-12:06:37.757(2)? Load the app in a browser to run client tests, or set the TEST_BROWSER_DRIVER environment variable. See https://github.com/meteortesting/meteor-mocha/blob/master/README.md#run-app-tests
=> Exited with code: 0
=> Your application is crashing. Waiting for file change.
实际上,它被重复了三遍。不漂亮。而且我不希望通过测试会导致我的应用崩溃。
在浏览器中我也得到了
根据Meteor testing guide,我期望得到更像是不错的输出:
答案 0 :(得分:2)
与大多数Node.js一样,几乎所有东西都有很多分支。 meteortesting:mocha
也是如此。
cultofcoders:mocha
似乎是practicalmeteor:mocha
中的a few commits ahead,在某一点上,这是推荐的Meteor测试框架。
如果您运行
meteor add cultofcoders:mocha
meteor test --driver-package cultofcoders:mocha
您会得到很好的输出。
出于好奇,我发现我得到的cultofcoders:mocha
(meteor list | grep mocha
)的版本是2.4.6,这个版本是github存储库所没有的...
答案 1 :(得分:1)
您所引用的屏幕截图是使用practicalmeteor:mocha
制作的,但meteortesting:mocha
不是(如其他答案所述)它的分支,而是针对相同目标而单独开发的软件包,正在Meteor中运行测试。
这些软件包的用法有很大不同,practicalmeteor:mocha
的设置似乎有些棘手,此列表仅适用于其版本1.0.1
,以后可能会更改。
但是我不得不承认文档需要刷新...无论如何,这里有一些有用的建议,我将很快在文档中提供。
如果只想开始使用,请运行以下命令:
meteor add meteortesting:mocha
npm i --save-dev puppeteer@^1.5.0
TEST_BROWSER_DRIVER=puppeteer meteor test --driver-package meteortesting:mocha --raw-logs --once
您要在测试完成后退出还是在文件更改后重新运行它们?
通常,Meteor在退出(正常退出或崩溃)(包括测试运行程序)时会重新启动您的应用程序。
如果要在一个CI中使用它,或者只想运行一次测试,请在流星命令中添加--once
,否则请设置TEST_WATCH=1
,然后再运行此脚本。如果您未设置env变量,并且未定义--once
,则Meteor将打印这些行并在测试完成后重新启动测试:
=> Exited with code: 0
=> Your application is crashing. Waiting for file change.
到目前为止,我还没有找到一种方法来检查是否设置了标志--once
,该标志将忽略env变量。在CI和连续测试之间进行选择的灵活性非常有用。
也许您当前正在使用某个功能,并且想在工作时运行测试。如果您已设置TEST_WATCH=1
并且未使用--once
,则Meteor会在注册文件已更改后重新启动测试。您甚至可以使用MOCHA_GREP
限制测试集合。
您希望在哪里以及如何查看结果?
当前,您必须选择在命令行上查看所有测试结果,还是在命令行中显示服务器测试和在浏览器中显示客户端测试。如屏幕快照所示,practicalmeteor:mocha
当前不支持在浏览器中显示服务器和客户端测试的结果。
请查看包装文档以获取更多详细信息:
您应该禁用流星时间戳以使其看起来更好。
由于每行都添加了时间戳,因此测试似乎非常赌博。为避免这种情况,请在您的命令中添加--raw-logs
。
我希望这能回答您的大部分问题。我知道该文档需要一些改进,如果有人愿意花些时间对“只想开始使用”的人们按照更合理的顺序进行整理,我们将表示欢迎。