모듈을 테스트 중이며 해당 모듈 내에서 종속성을 조롱하고 싶습니다. 나는 할 수있다 경우 나, 내 시나리오를 프레임 보자이 기능을 Jasmine이나 Sinon과 함께 모의 할 수있는 방법이 있습니까?
을 내 모듈 그래서
myModule.prototype.func = function(callback) {
complexObj.doStuff('foo', function(err) {
callback(err, 'stuff');
});
};
, 나는 기본적으로 complexObj
을 조롱하기 위해 노력하고있어. 이 경우 객체 전체를 조롱하거나 함수 doStuff
만 중요합니다. doStuff
은 웹 서비스 또는 파일 시스템과 상호 작용하는 것으로 가정합니다. complexObj
은 의존성 주사에 의해 myModule
에 주사되고있다. 나는 조롱하거나 객체와 기능을 스텁하려고 재스민과 Sinon를 사용하여 봤는데,하지만 난 운이 없었다, 그래서 좀 미봉책 것 같은 무언가에 의존했습니다에서
내 사양 : 당신이 볼 수
describe('Testing myModule', function() {
it('should do stuff', function() {
ComplexObj.prototype.doStuff = function(arg, callback) {
callback(null); // If no errors, 'doStuff' returns null indicating no errors
};
var complexObj = new ComplexObj();
new myModule(complexObj).func(function(err, results) {
// Set up expectations...
});
});
});
그래서, 나는 ComplexObj
객체의 doStuff
기능을 -mocking 사이비입니다. ComplexObj
또는 doStuff
함수에 대해 염려하지 않으므로 func
에 'null'이라는 콜백을 호출하면 doStuff
에 오류가 없었습니다. 앞서 언급했듯이이 문제를 해결할 더 좋은 방법이 있어야한다고 생각합니다. 제안?
var complexObj = {doStuff: null};
spyOn(complexObj, 'doStuff');
new myModule(complexObj).func(function(err, results) {
expect(complexObj.doStuff).toHaveBeenCalledWith(args, callback);
});
편집 :을 또는 당신은 doStuff
조롱 여러분의 기대에 설정할 수 있습니다 : 재스민와
인가를 가짜 가짜? doStuff가 호출되지 않기 때문에 실행되지 않을 것이라는 가정은 잘못된 가정을 초래할 것이라고 나는 예상한다. 나는 가짜에 vars를 설정하고 함수를 호출 한 후 해당 vars에 물건을 기대하는 경향이 있습니다. – Giszmo