javascript测试用例中的前后
我想在所有的测试之前做点什么,然后呢?组织代码的最佳方式是什么?例如:备份一些变量->清除它们->测试一些东西->恢复备份。”“之前”和“之后”都太奢侈了。谢谢 在所有测试开始之前调用函数是很简单的;但是,Jasmine(至少1.3.1)不允许您在reporter API之外指定自己完成的回调 这是我在网上找到的一个快速的小技巧。将其添加到javascript测试用例中的前后,javascript,unit-testing,jasmine,jasmine-jquery,Javascript,Unit Testing,Jasmine,Jasmine Jquery,我想在所有的测试之前做点什么,然后呢?组织代码的最佳方式是什么?例如:备份一些变量->清除它们->测试一些东西->恢复备份。”“之前”和“之后”都太奢侈了。谢谢 在所有测试开始之前调用函数是很简单的;但是,Jasmine(至少1.3.1)不允许您在reporter API之外指定自己完成的回调 这是我在网上找到的一个快速的小技巧。将其添加到SpecRunner.html或等效文件中 var oldCallback = jasmineEnv.currentRunner().finishCallba
SpecRunner.html
或等效文件中
var oldCallback = jasmineEnv.currentRunner().finishCallback;
jasmineEnv.currentRunner().finishCallback = function () {
oldCallback.apply(this, arguments);
// Do your code here
};
jasmineEnv.execute();
Jasmine提供了编写自己的reporter并附加它的选项。要实现报告器,有一些基本回调,如
initialize
、jasminestart
和jasmineDone
。有了这个,你就可以达到你的要求。例如,在Jasmine 2.0中,请参考Jasmine html.js
文件以获得基本了解。一个非常简单的解决方案:
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();
});
});
这样做的好处是,您可以将设置/拆卸放在任何位置(例如,嵌套套件的开始/结束处)。Jasmine>=2.1支持在之前进行
,
/之后对套件进行一次性设置和拆卸
如果您使用的是Jasmine 1.x,那么您可以使用it
(如其他人所建议的),或者加载一个支持before/afterAll的node_模块。检查Jasmine 2.0独立版本,文件的位置是“Jasmine-standalone-2.0.0\lib\Jasmine-2.0.0\Jasmine html.js”。如果在it
块中变异状态,则可能会引入代码气味。it
块仅用于无逻辑断言。