我正在使用jest-puppeteer来运行我的Web测试。如果我正在运行所有定义在一个文件中的测试,则一切运行正常。
import React, {Component} from 'react';
import EditorComponent from './Editor';
import { Modal } from 'react-bootstrap';
import { Button } from 'react-bootstrap';
import 'bootstrap/dist/css/bootstrap.min.css';
class Modals extends Component {
render() {
return (
<div className="static-modal">
<Modal.Dialog>
<Modal.Header>
<Modal.Title>Journey onward...</Modal.Title>
</Modal.Header>
<Modal.Body>{this.props.children}</Modal.Body>
<Modal.Footer>
<Button>Close</Button>
<Button bsStyle="primary">Save changes</Button>
</Modal.Footer>
</Modal.Dialog>
</div>
);
}
}
export default Modals;
但是,如果我在自己的文件中运行每个测试,则会收到错误消息。
ReactDOM.render(<Modals childComponent={<EditorComponent />} />, document.getElementById('root'));
文件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
});
it('test 2', async () => {
//my test steps
});
});
文件2
UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'addExpectationResult' of undefined
有趣的是,如果我在test2的第一步中添加console.log('some statement'),那么一切都会再次起作用。这就是为什么我认为这可能是时间问题。我按顺序运行测试,即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
});
});
有人可以帮忙吗?
答案 0 :(得分:0)
正如您所说,我同意问题是依次发生的,正如Patrick Hulce回答that github bugreport中所述:
FWIW我也遇到了这个问题,并导致了这个问题。只发生在 当异步测试超时但基本操作继续时的CI 直到测试套件完成之后(我猜是回调 尝试添加期望的结果)。我永远都做不到 虽然发生在本地。
所以您的错误可能在“ //我的测试步骤”中,您可以在运行异步过程之前在测试中对某些您可以/需要进行的操作进行操作。