우리가하는 게요! 플러그인의 내부에서는 setInterval을 사용과 같이되어 말할 수 있습니다 :이 서버에 대한 우리의 테스트에서서버 테스트에서 setInterval을 처리하는 방법
// index.js
internals = {
storage: {},
problemFunc:() => {
setInterval((storage) => {
storage.forEach((problem) => {
problem.foo = 'bar';
});
}, 500);
}
};
module.exports.register = (server, options, next) => {
server.on('start',() => { // called when the server starts
internals.storage.problem1 = {};
internals.storage.problem2 = {};
internals.storage.problem3 = {};
internals.problemFunc(internals.storage);
});
}
, 우리는 시작하고 서버를 여러 번 중지 할 수 있습니다 서버의 여러 측면을 테스트합니다. 경우에 따라 cannot set property 'foo' of undefined
과 같은 오류가 표시됩니다. 이는 비동기 코드가 실행되기 바로 전에 서버가 종료되고 내부적으로 서버 중지와 함께 internals.storage.problem이 제거되기 때문입니다.
이것은 총체적으로 의미가 있으며 나는 그것에 문제가 없습니다. 나는 정말로 내 테스트가 90 %가 아닌 100 %의 시간 동안 작동하는지 확인하는 좋은 방법이 무엇인지 알고 싶다.
problemFunc:() => {
setInterval((storage) => {
storage.forEach((problem) => {
if (problem !== undefined) { // check if deleted
problem.foo = 'bar';
}
});
}, 500);
}
또는 :
우리는 할 수
problemFunc:() => {
setInterval((storage = {}) => { // default assignment
storage.forEach((problem) => {
problem.foo = 'bar';
});
}, 500);
}
하지만 차라리 그냥 내 테스트를 통과하도록 내 코드에 조건문을 추가 할 것입니다. 또한, 때때로 조건부가 실행되고 때로는 실행되지 않기 때문에 코드 적용 범위를 100 % 유지하는 데 문제가 발생할 수 있습니다. 이것에 대해 더 좋은 방법은 무엇입니까?
100 %의 코드 커버리지에 도달하기 위해 노력 너무 90 좋아해. – DanFromGermany
@DanFromGermany 100 %를 목표로하는 것과 단일 테스트를받는 것의 차이점은 외부 요인으로 인해 실행될 때마다 제공되는 서비스 범위가 다양하다는 것입니다. –
@James Thorpe : 정확합니다. 우리는 분명히 조건부를 주석 처리하여 커버리지 검사기가 그것을 무시할 수는 있지만, 나는 작동하는 어떤 것보다 이것을하기위한 명확한 방법을 찾고있다. –