在验收测试之前运行一次设置

时间:2017-06-22 15:43:53

标签: javascript codeceptjs

我有以下使用CodeceptJS编写的验收测试套件,它工作正常。我在每个步骤之前使用Before登录。问题是Before函数等同于Mocha的beforeEach,而不是Mocha的before,我真正想要的是让一些代码运行一次,因为此登录步骤需要一些时间才能完成。

我希望最终能够运行一次并从javascript获取loginToken的函数,然后我可以使用Before函数在每次测试之前设置它。关于如何做到这一点的任何线索?

Feature('Top level-routes');

Before((I) => {
  const loginBtnText = 'LOG IN';

  I.amOnPage('/login');
  I.fillField('username', 'root');
  I.fillField('password', 'mypass');
  I.see(loginBtnText);
  I.seeElementInDOM('[name=loginBtn]');
  I.click('loginBtn');

  // I don't understand why I need to wait for the click to register
  // but nothing happens unless I do ...
  I.wait(1);
  I.dontSee(loginBtnText);
});

Scenario('a page to add a new encounter should be rendered', (I) => {
  I.amOnPage('/encounter/new');
  I.wait(2);
  I.see('First');
  I.see('Last');
});

Scenario('a page to add a new user should be rendered', (I) => {
  I.amOnPage('/user/new');
  I.wait(2);
  I.see('Personalia');
})

P.S。我确实意识到我可能会使用一些外部状态来检查该函数是否已经运行,但尚未能够执行此操作。最简单的答案的道具:))

1 个答案:

答案 0 :(得分:0)

您可以拥有自定义CodeceptJS助手,您可以使用以下方法,

_init - 在所有测试之前, _before - 在测试之前

参考:http://codecept.io/helpers/