저는 모카와 테스트를하고있는 직원이 있습니다. 그러나 약속 된 해결책에서 적절한 응답을 얻었음에도 불구하고, 모카는 시간 초과로 인해 시험에 실패합니다. 중요한 사실은 그것이 모카 시간 초과 후 해결된다는 것입니다.모카 타임 아웃 후 약속을 지키십시오.
import chai, { expect } from 'chai';
// Needed otherwise Worker is undefined in the test environment
const Worker = require('webworker-threads').Worker;
describe('WebWorker',() => {
it('should return correctly',() => {
return new Promise(res => {
const dummyWorker = new Worker('./public/js/worker.bundle.js');
dummyWorker.onmessage = e => {
console.log('test message'); // 'test message' prints to testing log
res(e.data);
};
dummyWorker.postMessage(['foo', 'bar']);
})
.then(workerData => {
console.log(workerData[0]); // 'foo' prints to testing log
expect(workerData[0]).to.equal('foo');
})
.catch(err => console.error(err));
});
});
Error: Timeout of 2000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves.
내가 사용, before()
후크를 사용하여, done()
를 사용 모든 일부 순열을 시도했습니다 차이 - 약속 - 제한 시간을 증가 this.timeout(5000)
를 사용하여, 약속과 모카의 완료를 사용하고, 온 에,하지만 아무것도 작동하는 것 같습니다.
당신은 모카의 제한 시간을 연장해야한다. 'it' arrow 함수를 정규 함수로 다시 쓰고'this.timeout (5000)'의 첫번째 줄을 추가하십시오. 이렇게하면 모카는 적어도 5 초 동안 기다렸다가 불평을합니다. – MarcoL
@MarcoL 안녕하십니까. 나는 실제로 그것도 시도했지만, 시도한 것들의 목록에 그것을 잊어 버렸다. 나는 지금 목록을 업데이트 할 것이다. – mythereal
당신은 약속을 되 돌리므로, 모카는 그 약속이 올바르게 풀릴 때까지 기다려야합니다. 이것은'dummyWorker.onmessage (...)'가 절대로 호출되지 않는다는 것을 강하게 암시합니다. './public/js/worker.bundle.js'가하고있는 것을 게시 할 수 있습니까? –