我正在测试使用以下命令发出的 AJAX 请求XMLHttpRequest
:
export default function requestToTest() {
const xhr = new XMLHttpRequest();
xhr.open('GET', 'https://example.com/service');
xhr.onload = () => {
console.log('onload');
// etc.
};
xhr.onerror = () => {
console.log('onerror');
// etc.
};
xhr.send();
}
所以我使用 Nock(和 Mocha)设置了一个测试:
describe('requestToTest()', () => {
it('should handle a successful request', () => {
nock('https://example.com')
.log(console.log)
.get('/service')
.reply(200, { some: 'json' });
requestToTest();
expect( /* things I want to check */ ).to.be.true;
});
});
当我运行这个测试时,xhr.onerror()
会触发,而不是xhr.onload()
. 但是,通过观察 Nock 从调用到 的输出log()
,我确定 Nock 正在拦截我的 AJAX 请求,并且拦截的请求与 Nock 的预期 URL 匹配。
为什么在我的测试中xhr.onerror
被调用而不是被调用?xhr.onload