我有以下使用 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');
})
PS我确实意识到我可能可以使用一些外部状态来解决这个问题,以检查该函数是否之前运行过,但还没有能够做到这一点。支持最不老套的答案:)