我正在使用jest puppeteer来运行我的网络测试。如果我在一个文件中运行所有定义的测试,那么一切都可以完美运行。
describe('user', () => {
jest.setTimeout(12000);
beforeEach(async () => {
await page.setViewport({width: 1200, height: 2000});
await page.goTo('http://localhost:3000');
});
it('test 1', async () => {
//my test steps
});
it('test 2', async () => {
//my test steps
});
});
但是,如果我在自己的文件中运行每个测试,我会得到一个错误。
UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'addExpectationResult' of undefined
文件1
describe('user', () => {
jest.setTimeout(12000);
beforeEach(async () => {
await page.setViewport({width: 1200, height: 2000});
await page.goTo('http://localhost:3000');
});
it('test 1', async () => {
//my test steps
});
});
文件2
describe('user', () => {
jest.setTimeout(12000);
beforeEach(async () => {
await page.setViewport({width: 1200, height: 2000});
await page.goTo('http://localhost:3000');
});
it('test 2', async () => {
//my test steps
});
});
有趣的是,如果我在测试2中添加console.log("somestatement"(作为第一步,一切都会重新开始。这就是为什么我认为这可能是一个时间问题。我正在按顺序运行测试,即jest --runInBand
有人能帮忙吗?
正如你所说,我同意问题是异步顺序,正如Patrick Hulce中的github错误报告中所解释的那样:
FWIW我也遇到了这个问题,并导致了这个问题。只发生在异步测试超时但基础操作继续时的CI直到测试套件完成(我猜是回调尝试添加期望的结果(。我永远也做不到不过在本地发生。
所以你的错误可能在"//my测试步骤"中,在运行异步进程之前,你在两个测试中都操作了一些你可以/需要操作的东西。