在JavaScript测试用例中的所有和AfterAll之前

时间:2014-02-12 11:18:54

标签: javascript unit-testing jasmine jasmine-jquery

我想在所有测试之前做一些事情,之后呢?组织代码的最佳方法是什么?例如:备份一些变量 - >清除它们 - >测试一些东西 - >恢复备份。 'beforeEach'和'afterEach'太昂贵了。谢谢!

4 个答案:

答案 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提供编写自己的记者并附加它的选项。要实施记者,有initializejasmineStartedjasmineDone等基本回调。有了这个,你就可以达到你的要求。例如,在Jasmine 2.0中,请参阅jasmine-html.js文件以获得基本的理解。