何时/多久使用Chai-as-promised' s .notify()

时间:2014-08-06 21:02:55

标签: testing protractor chai cucumberjs

我们正在使用Chai-as-promised与量角器和cucumberjs。我对chai-as-promise库中的.notify(回调)方法有疑问。

如果我们运行多个方案,每个方案都有几个步骤。应该在每个步骤结束时调用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(回调)'。

所以

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

1 个答案:

答案 0 :(得分:1)

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

v0.5.0中,他们更新了库,因此不再需要callback参数。来自CHANGELOG

  

新功能

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

虽然来自chai-as-promised断言aren't real promises的返回值,但它们的界面与CucumberJS类似,足以让它们像承诺一样对待它们。所以,回答你的问题:

  • CucumberJS v0.5.0之前,您必须在每个步骤结束时致电notify()
  • CucumberJS v0.5.0之后,您无需在任何步骤结束时致电notify()