我想在所有测试之前做点什么,然后呢?组织代码的最佳方式是什么?例如:备份一些变量 -> 清除它们 -> 测试一些东西 -> 恢复备份。'beforeEach' 和 'afterEach' 太贵了。谢谢!
问问题
6003 次
4 回答
9
一个非常简单的解决方案:
describe("all o' my tests", function() {
it("setup for all tests", function() {
setItUp();
});
describe("actual test suite", function() {
});
it("tear down for all tests", function() {
cleanItUp();
});
});
这样做的好处是您可以真正将设置/拆卸放在任何地方(例如,在嵌套套件的开始/结束处)。
于 2014-06-23T15:03:55.133 回答
6
Jasmine >=2.1 支持beforeAll
/afterAll
为您的套件进行一次性设置和拆卸。
如果您使用的是 Jasmine 1.x,则可以使用it
for(如其他人建议的那样)或加载支持 beforeAll/afterAll 的 node_module,例如jasmine-before-all。
于 2015-04-16T10:53:11.080 回答
0
在所有测试开始之前调用函数是微不足道的;但是,Jasmine(至少 1.3.1)不允许您在报告器 API 之外指定自己的完成回调。
这是我在Google Groups上找到的一个快速小技巧。将此添加到您的SpecRunner.html
或同等的。
var oldCallback = jasmineEnv.currentRunner().finishCallback;
jasmineEnv.currentRunner().finishCallback = function () {
oldCallback.apply(this, arguments);
// Do your code here
};
jasmineEnv.execute();
于 2014-02-12T13:50:02.120 回答
0
Jasmine 提供了编写自己的记者并附上的选项。要实现记者,有基本的回调initialize
,如jasmineStarted
和jasmineDone
。有了这个,你可以达到你的要求。比如在 Jasmine 2.0 中,参考jasmine-html.js
文件有一个基本的了解。
于 2014-02-12T15:29:44.867 回答