죄송합니다. 간단한 질문 인 경우 Node와 Sinon을 처음 사용하는 경우가 많습니다. 나는 중첩 된 비동기 함수가 Nodej에서 호출되었다고 주장하는 방법을 알아 내려고 애 쓰고있다.Sinon - 중첩 된 함수를 스텁하는 방법?
저는 모카 (mocha), 샤이 (sinon) 및 요청 (https://github.com/request/request)을 사용하고 있습니다. 그러나 스터 빙 부분에 뭔가 빠져 있다고 생각합니다. my_app.js 내부
예 - 테스트 내부
var request = require('request');
function MyModule() {
};
MyModule.prototype.getTicker = function(callback) {
request('http://example.com/api/ticker', function(error, response) {
if (error) {
callback(error);
} else {
callback(null, response);
}
});
};
exports.mymodule = new MyModule();
. 내가 요청하고 일부 더미 데이터를 제공하기 위해 전화를 스텁하려고 노력하고 있습니다. 하지만 내가 줄에 "요청이 정의되지 않은"오류가 점점 계속 "스텁을 만드는거야합니다.
var myApp = require('../my_app.js')
,assert = require("assert")
,chai = require('chai')
,sinon = require('sinon')
,expect = chai.expect;
describe('mymodule object', function() {
var mymodule = myApp.mymodule;
before(function(done) {
sinon.stub(request).yields(null, JSON.stringify({
price: '100 USD'
}));
done();
});
it('getTicker function should call request on example ticker', function(done) {
mymodule.getTicker(function(error, result){
request.called.should.be.equal(true);
done();
});
});
});
내가 sinon.stub (objname을 할당 할 수 있습니다 알고있다"funcname에 ") 또는 sinon.stub을 ("funcname"),하지만 그 밖에 개체를 설정, getTicker 함수 안에 함수 요청을 스텁하려고 해요.
어쩌면 내가 스파이를 사용해야합니다. (하지만 어떻게?) 위의 getTicker 함수를 테스트하는 더 좋은 방법이 있습니까?
굉장해, 이것에 대해 get 메소드를 사용하지 않았다고 생각하지 않았다. 이제 콜백이 호출 된 것을 확인하기 위해 스파이를 사용할 수도 있습니다. –
Ahh yup 콜백이 호출되었는지 확인할 수 있습니다. 하지만 약간 다른 구문'mymodule.getTicker (callback);''request.get.should.have.been.called; '및'request.get.should.have.been.called;'를 사용하고 있습니다. ! –