在“it”块之外运行代码会破坏我的Jasmine测试

时间:2012-09-01 12:55:05

标签: javascript jasmine

我正在尝试使用 jasmine

编写一些测试用例(第一次)
describe("Widget App core logic", function () {
  WAPP.widgets = [];

addwidget将在我的WAPP.widgets数组中添加一个小部件

  WAPP.addWidget('testRecord', 'testRecordContent');
  it("added", function () {
        expect(WAPP.widgets.length).toEqual(1);
    });

删除小部件将删除相同的小部件

  WAPP.removeWidget('1'); 
  it("record removed correctly", function () {
        expect(WAPP.widgets.length).toEqual(0);
    })    

写完第二个规范后,我的第一个规范失败,因为它显示 WAPP .widgets为空。即使在第一个规范时, WAPP .widgets中有一个值

1 个答案:

答案 0 :(得分:4)

这里的问题是你不应该有it之外的测试代码。在执行所有测试用例之前,it之外的代码运行一次。在您的情况下可能发生的是您在测试开始之前删除所有小部件。

您的测试代码应该是这样的:

describe("Widget App core logic", function () {
  beforeEach(function () {
    WAPP.widgets = [];
  });

  it("added", function () {
    WAPP.addWidget('testRecord', 'testRecordContent');
    expect(WAPP.widgets.length).toEqual(1);
  });

  it("record removed correctly", function () {
    WAPP.addWidget('1', '1');
    WAPP.removeWidget('1'); 
    expect(WAPP.widgets.length).toEqual(0);
  })    

});

请注意,您的测试代码应该是自包含的,所有初始化都应该在itbeforeEach内完成。