1
테스트중인 함수는 대략 비슷합니다.차이 (chai)와 스론 (sinon)을 사용하여 메소드 내에서 약속을 스텁하기
function doThing(data, callback) {
externalService.post('send').request(data)
.then(() => {
if (callback) { callback(); }
})
.catch((message) => {
logger.warn('warning message');
if (callback) { callback(); }
});
}
그리고 나는 이것을 Chai와 Sinon을 사용하여 테스트하려고합니다.
다른 가이드를 따라 시도해 보았습니다. 현재의 주문은 다음과 같습니다. 내가 externalService.post
얻을 수
const thingBeingTested = require('thing-being-tested');
const chai = require('chai');
const sinon = require('sinon');
require('sinon-as-promised');
const sinonChai = require('sinon-chai');
const expect = chai.expect;
var chaiAsPromised = require('chai-as-promised');
chai.use(chaiAsPromised);
chai.use(sinonChai);
describe('The Thing',() => {
it('should run a callback when requested and successful', done => {
const externalService = { post: { request: sinon.stub() } };
const callback = sinon.spy();
externalService.post.request.resolves(callback);
doThing({...}, callback);
expect(callback).to.have.been.called;
done();
});
});
는 올바르게 스텁. 어떤 도움이라도 대단히 감사하겠습니다.
나는 Chai와 Sinon에 완전히 새로운 것이므로, 어리석은 짓을하기를 완전히 기대한다.
으로 복원하는 것을 잊지 마세요 당신이 프록시 nodejs가 요구하는 [proxyquire] (https://github.com/thlorenz/proxyquire)를 사용하여 고려 되세요 테스트 중에 의존성을 무시할 수있게하려면? 'nodejs '에서 테스트 할 때 사용할 유용한 도구이며 내 의견으로는 테스트가 더 간단합니다. – hyprstack
고마워요 @hyprstack - 나는 그것에 대해 들어 본 적이 없었습니다. 이 사용 사례에 대해 이해가되는지 살펴볼 것입니다 (예제에서는 한 가지 테스트가 있었지만, 물론 운동이 필요한 몇 가지 다른 것들이 있습니다). – Toby