2

我们将 Chai-as-promised 与量角器和 cucumberjs 一起使用。我对 chai-as-promised 库中的 .notify(callback) 方法有疑问。

如果我们正在运行多个场景,每个场景都包含几个步骤。是否应该在每个步骤结束时调用 notify()?

所以

Scenario 1
  Step 1 Expect(promise).to.eventually.to.equal(true).and.notify(callback);
  Step 2 Expect(promise2).to.eventually.to.equal(true).and.notify(callback);
Scenario 2
  Step 3 Expect(promise3).to.eventually.to.equal(true).and.notify(callback);
  Step 4 Expect(promise4).to.eventually.to.equal(true).and.notify(callback);

我总是认为我们应该只在最后一步使用“and.notify(callback)”。

所以

Scenario 1
  Step 1 Expect(promise).to.eventually.to.equal(true);
  Step 2 Expect(promise2).to.eventually.to.equal(true).and.notify(callback);
Scenario 2
  Step 3 Expect(promise3).to.eventually.to.equal(true);
  Step 4 Expect(promise4).to.eventually.to.equal(true).and.notify(callback);

我在 github 页面上有一个类似的问题。 https://github.com/domenic/chai-as-promised/issues/65

4

1 回答 1

1

在 之前CucumberJS v0.5.0,所有步骤定义都需要使用一个callback参数来定义,一旦步骤执行完毕就需要调用该参数。

在中,他们更新了库,因此不再需要v0.5.0该论点。callback从他们的变更日志中

新的功能

  • 支持来自步骤定义的承诺 (Will Farrell)
  • 支持同步步骤定义 (Julien Biezemans)

chai-as-promised虽然断言的返回值不是真正的 Promise,但它们的接口非常相似,CucumberJS可以将它们视为 Promise。所以,回答你的问题:

  • 之前CucumberJS v0.5.0,您必须notify()在每个步骤结束时调用。
  • 之后CucumberJS v0.5.0,您不必notify()在任何步骤结束时调用。
于 2016-01-27T00:19:27.030 回答