我想在所有测试之前做一些事情,之后呢?组织代码的最佳方法是什么?例如:备份一些变量 - >清除它们 - >测试一些东西 - >恢复备份。 'beforeEach'和'afterEach'太昂贵了。谢谢!
答案 0 :(得分: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();
});
});
这样做的好处是你可以将你的设置/拆解放在任何地方(例如,在嵌套套件的开头/结尾)。
答案 1 :(得分:6)
Jasmine> = 2.1支持beforeAll
/ afterAll
为您的套件进行一次性设置和拆解。
如果您使用的是Jasmine 1.x,您可以使用it
(按照其他人的建议)或加载支持beforeAll / afterAll的node_module,例如jasmine-before-all。
答案 2 :(得分: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();
答案 3 :(得分:0)
Jasmine提供编写自己的记者并附加它的选项。要实施记者,有initialize
,jasmineStarted
和jasmineDone
等基本回调。有了这个,你就可以达到你的要求。例如,在Jasmine 2.0中,请参阅jasmine-html.js
文件以获得基本的理解。