【问题标题】:Running code outside the "it" block breaks my Jasmine test在“it”块之外运行代码会破坏我的 Jasmine 测试
【发布时间】:2012-09-02 03:16:41
【问题描述】:

我正在尝试使用 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 函数内?
  • 没有删除和添加,它的调用在不同的描述中
  • 所以,尝试在同一个描述中使用它们。看来应该这样用(我看过文档)。
  • 不起作用。你能指点我的文档吗

标签: javascript jasmine


【解决方案1】:

这里的问题是你不应该有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 内完成。

【讨论】:

  • 实际上这是有史以来最好的建议!我不敢相信我已经玩了多久,移动代码并在文档中浪费了我的时间。突然一切都按预期工作。确保一切都在it
猜你喜欢
  • 2013-08-23
  • 1970-01-01
  • 2014-09-16
  • 2018-06-28
  • 1970-01-01
  • 2015-04-02
  • 2017-11-22
  • 1970-01-01
  • 2012-07-13
相关资源
最近更新 更多