使用mocha + protractor ...示例...你有一个测试规范可以访问网页并从该网页上删除数据。
你有一个描述,然后是一系列的网页。
在此之后,您希望包含另一个处理数据的方法并测试其有效性/完整性,然后为每个数据点生成一套新的测试。
根据pre-require和require事件发出的方式设置全局描述及其功能(及其相关的上下文),Mocha目前在我发现的内容中不支持。
我可以更轻松地覆盖描述,并且它可以手动将新生成的套件和测试/等附加到正确的父级...然后将它们设置回原来的...但是想知道是否有基本原因并非(似乎)有意阻止现有代码库发生。
答案 0 :(得分:0)
它不起作用,因为Mocha运行这样的测试套件:
查找测试。当describe
执行Mocha时记录名称并立即执行回调。当it
或钩子(before
,beforeEach
,...)执行时,Mocha会记录测试名称(仅适用于it
)并记录以供将来执行< / strong>给出的回调。
运行测试。 Mocha以正确的顺序运行给it
和钩子的回调。 此时无法再拨打describe
或it
并让他们行为正常。在某些问题上我已经看到有人打电话给{{} 1}}从回调到it
并获得某种行为,但这只是运气。摩卡不是为这种东西而设计的。
还存在结构性问题。 it
可以包含describe
和describe
,但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...
。