2016-06-15 5 views
0

나는 firebase 데이터베이스에 대한 spyOn 호출을 찾고 있습니다. Firebase 호출을 래핑하는 FireFunc 파일이 있습니다. 그러나 spyOn check 메소드로 가면 정규 결과를 반환합니다. 무슨 일 이니?재스민을 사용하여 firebase 통화를 조롱

var FireFunc = require("../js/services-fb-functions.js"); 

describe('Firebase Testing Suite', function() { 
    var firebase; 
    var testPath; 
    var testResult = {}; 

    beforeAll(function() { 
     var firebaseFunctions = ['check'] 
     firebase = jasmine.createSpyObj('firebase', firebaseFunctions) 

     firebase.check.and.callFake(function() { 
      return 2 
     }); 
    }); 

    describe('check', function() { 
    it('is working?', function() { 
     var x = FireFunc.zset() 
     expect(x).toBe(3); // THIS IS RETURNING 1... which means the spyOn doesn't work for me ! 
    }); 
}); 

이것은 문제는 당신이 테스트중인 개체에 firebase 개체의 조롱 버전을 제공하지 않았 음을 내 코드 (JS/서비스-FB-functions.js)

var firebase = {}; 
firebase.check = function() { 
    return 1; 
} 

module.exports = { 
    zset: function() { 
     return firebase.check(); 
    } 
} 

답변

1

입니다. js/services-fb-functions.js에있는 firebase 객체는 순수하게 내부 용이므로 테스트를 위해 노출되지 않습니다. 일반적으로 테스트 중에 모의하려는 내부 객체를 제공하는 데는 dependency injection을 사용하는 것이 좋습니다. JSFiddle과 Jasmine 1.3을 사용하기 위해 약간의 코드를 수정 했으므로 내 제한된 JS 기술을 사용하십시오 (내부 객체를보다 세련되게 표현할 수있는 방법이 있습니다). 그러나이 JSFiddle은 내 요점을 설명해야합니다. Simple Jasmine example using spies

+0

Ah, 권리! 오늘 나중에 수표를 드리겠습니다. 감사! – ebbflowgo