Jasmine单元测试当前上下文或此var

时间:2015-07-12 17:38:27

标签: javascript unit-testing jasmine

我一直在查看本文的Jasmine单元测试。我找到了这个例子:

pack

此示例使用label.pack(side="top", fill="x") describe("Episode", function() { beforeEach(function() { this.episode = new Backbone.Model({ title: "Hollywood - Part 2" }); }); it("should expose an attribute", function() { expect(this.episode.get("title")) .toEqual("Hollywood - Part 2"); }); }); 中的 this.episode 。据我所知,JS不会像这样工作。 beforeEach根本无法在describe block中使用?

1 个答案:

答案 0 :(得分:3)

Jasmine引入了一种在beforeEachitafterEachthis关键字之间共享变量的新方法。

您还应该知道每个规范的beforeEachitafterEach都有this作为同一个空对象,为下一个规范设置为空。

<强> From Github

  

对于每个测试(及其beforeEach / afterEach挂钩),jasmine设置   每个函数的接收者到最初为空的对象。这个   对象,在Jasmine的源代码中称为userContext,可以   分配给它的属性,并在每个结束时被吹走   测试。我们最近试图解决我们遇到的问题   切换到为此对象分配变量,而不是   在描述中声明它们然后分配它们。

由于以下原因,这种新方法被认为更好:

  • 没有更多的全球泄密
  • 明确的含义
  • 通过动态调用改进代码重用
  • 通过延迟评估减少代码重复