Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript测试用例中的前后_Javascript_Unit Testing_Jasmine_Jasmine Jquery - Fatal编程技术网

javascript测试用例中的前后

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

我想在所有的测试之前做点什么,然后呢?组织代码的最佳方式是什么?例如:备份一些变量->清除它们->测试一些东西->恢复备份。”“之前”和“之后”都太奢侈了。谢谢

在所有测试开始之前调用函数是很简单的;但是,Jasmine(至少1.3.1)不允许您在reporter API之外指定自己完成的回调

这是我在网上找到的一个快速的小技巧。将其添加到
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
块仅用于无逻辑断言。