나는 약속을 되풀이하는 데이터베이스 호출을 모의하고 싶다. 그런 다음 정확한 인수로 호출되는지 여부를 확인하려고합니다. 나는 내가 실패하려고 할 때 다음이 통과지고 적절한 formattedData
을 주면 내가 dbMock.withExactArgs(formattedData)
약속을 반환하고 정확한 인수로 확인하는 함수를 모의하는 법
를 사용할 때
func(data) {
let formattedData = formatData(data);
return DbClient.saveData(formattedData).then(() => {
return { "ok": true }
}).catch(() => {
return { "ok": false }
});
}
내 테스트 케이스는 약속이 해결되지
it("", (done) => {
let dbMock = sinon.mock(DbClient).expects("saveData");
dbMock.returns(Promise.resolve({ "ok": true }));
dbMock.withExactArgs(formattedData);
func(data).then(resp => {
try{
dbMock.verify();
expect(resp).to.deep.equal({ "ok": true });
done();
} catch(err) {
done(err);
}
})
});
입니다 formattedData
대신 다른 args로 테스트하면 약속이 해결되지 않으므로이 오류가 발생합니다.
Error: timeout of 3000ms exceeded. Ensure the done() callback is being called in this test.
** 모의 테스트에서 약속이 해결되었으므로 dbMock.withExactArgs(formattedData)
테스트를 통과하면 ** 통과합니다.
사실 내 func는 약속 [지금 업데이트]에서 언급하는 것을 잊었습니다. 그러나 여전히 나는 같은 문제를 겪고있다. 그것은 문제에서 언급 한대로 해결하거나 거부하겠다는 약속을 기다리고있다. –