有没有理由说mocha不支持在其中描述函数?

时间:2014-11-12 19:34:43

标签: mocha protractor

使用mocha + protractor ...示例...你有一个测试规范可以访问网页并从该网页上删除数据。

你有一个描述,然后是一系列的网页。

在此之后,您希望包含另一个处理数据的方法并测试其有效性/完整性,然后为每个数据点生成一套新的测试。

根据pre-require和require事件发出的方式设置全局描述及其功能(及其相关的上下文),Mocha目前在我发现的内容中不支持。

我可以更轻松地覆盖描述,并且它可以手动将新生成的套件和测试/等附加到正确的父级...然后将它们设置回原来的...但是想知道是否有基本原因并非(似乎)有意阻止现有代码库发生。

1 个答案:

答案 0 :(得分:0)

它不起作用,因为Mocha运行这样的测试套件:

  1. 查找测试。当describe执行Mocha时记录名称并立即执行回调。当it或钩子(beforebeforeEach,...)执行时,Mocha会记录测试名称(仅适用于it)并记录以供将来执行< / strong>给出的回调。

  2. 运行测试。 Mocha以正确的顺序运行给it和钩子的回调。 此时无法再拨打describeit并让他们行为正常。在某些问题上我已经看到有人打电话给{{} 1}}从回调到it并获得某种行为,但这只是运气。摩卡不是为这种东西而设计的。

  3. 还存在结构性问题。 it可以包含describedescribe,但it不能包含子结构。我猜it中的describe可以某种方式附加到it的父describe。还有异步测试的问题:它们中的it将被附加在哪里? (当异步代码执行时,VM已超出describe的范围。)我不清楚钩子的语义是否可以维持。

    阅读有关问题的评论:不,您不应该将it放在it挂钩中。但是,您可以这样做:

    before

    在某些测试套件中,我在目录中对每个文件执行一次测试,describe("top", function () { var test = callSomethingThatReturnsAnArrayOfTestInformation(); for(var i = 0, test; (test = tests[i]); ++i) { it("test " + i, function () { // do something with `test` }); } }); callSomething...