javascript - 在 "it" block 之外运行代码会破坏我的 Jasmine 测试

标签 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

中有一个值

最佳答案

这里的问题是你不应该在之外有测试代码。 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 中完成。

关于javascript - 在 "it" block 之外运行代码会破坏我的 Jasmine 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12227922/

相关文章:

javascript - 如何使用 <button type ="submit"> 标签提交表单

javascript - Highcharts 将标签分配给 x 轴最大值

javascript - html 美化 json 忽略新行字符

javascript - 获取内容时 graphql 查询中出现未知类型错误?

javascript - 在 Jasmine 测试中将对 console.log() 的调用重定向到标准输出

javascript - TypeError : app. get 不是函数

javascript - 带有 templateUrl 和隔离范围的 Angular Testing 指令

unit-testing - Angular 2 单元测试

javascript - Jasmine toEqual 失败但打印两个对象是相同的

AngularJS + Testaulous/Jasmine 单元测试 : Executed 0 of 0 SUCCESS