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

Javascript 在“it”块之外运行代码会破坏我的Jasmine测试,javascript,jasmine,Javascript,Jasmine,我第一次尝试使用jasmine编写一些测试用例 addwidget将在我的WAPP.widgets数组中添加一个小部件 WAPP.addWidget('testRecord', 'testRecordContent'); it("added", function () { expect(WAPP.widgets.length).toEqual(1); }); 移除小部件将移除相同的小部件 WAPP.removeWidget('1'); it("reco

我第一次尝试使用jasmine编写一些测试用例

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中有一个值,但这里的问题是您不应该在它之外有测试代码。它之外的代码在执行所有测试用例之前运行一次。在您的案例中可能发生的情况是,您甚至在测试开始之前就删除了所有小部件

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

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);
  })    

});

请注意,您的测试代码应该是自包含的,所有的初始化都应该在it内部完成,或者使用beforeach完成。

这里的问题是,您不应该在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);
  })    

});

请注意,您的测试代码应该是自包含的,所有的初始化都应该在it内部完成,或者使用BEFOREACH完成。

您的代码可以同步运行吗?jasmine文档对此有何评论?你的完整代码是什么?这两个it调用位于descripe函数中?不删除和添加这两个it调用位于不同的descripe中,请尝试在同一descripe中使用它们。看来应该这样用我看到的文件,不起作用。你能告诉我一些文件吗?这些文件保证你的代码同步运行?jasmine文档对此有何评论?你的完整代码是什么?这两个it调用位于descripe函数中?不删除和添加这两个it调用位于不同的descripe中,请尝试在同一descripe中使用它们。看来应该这样用我看到的文件,不起作用。你能给我指一下文件吗?事实上,这是最好的建议!我真不敢相信我已经玩了这么久,移动代码,把时间浪费在文档上。突然间,一切都如预期的那样运转。确保所有东西都在里面,这是有史以来最好的建议!我真不敢相信我已经玩了这么久,移动代码,把时间浪费在文档上。突然间,一切都如预期的那样运转。确保所有东西都在里面