μλ
λͺ¨λ,
λ΄ νμΌμ λλΆλΆμμ μλ λ°©λ²μ μ¬μ©νμ΅λλ€.
var request = require('request');
request(url, function(error, response, body) {
if (!error && response.statusCode === 200) {
λ¨μ ν μ€νΈμμ μ΄ λ©μλλ₯Ό μ΄λ»κ² μ€ν ν©λκΉ?
μ΄λ―Έ sinon.stub(request)λ₯Ό μλνμ§λ§ λμμ΄ λμ§ μμ΅λλ€.
@simov λ μ΄λ―Έ μλνμ§λ§ μ°Ύμ μ μμμ΅λλ€. μ΄λ―Έ μ΄ λ¬Έμ λ₯Ό μ ν μ¬λμ΄ μμ΅λκΉ?
proxyquire μλ:
var proxyquire = require('proxyquire');
var requestSpy = jasmine.createSpy();
var myFile = proxyquire('../../file/that/requires/request', {
request: requestSpy,
});
describe('the test', function() {
it('should use the mock', function() {
myFile.makeARequest();
expect(requestSpy).toHaveBeenCalledWith(jasmine.objectContaining({
headers: jasmine.objectContaining({
Accept: 'application/json',
}),
method: 'GET',
}), jasmine.any(Function));
});
});
μ: http://vansande.org/2015/03/22/unit_testing_with_mocks_in_node_js/
λλ λͺ¨μ μꡬ
var mock = require('mock-require');
var requestSpy = jasmine.createSpy();
mock('request', requestSpy);
var myFile = require('../../file/that/requires/request');
describe('the test', function() {
it('should use the mock', function() {
myFile.makeARequest();
expect(requestSpy).toHaveBeenCalled();
// and you should be able to invoke the callback also, e.g.
// var callback = requestSpy.calls.first().args[1];
// expect(callback(/* vars */))...
});
});
μ΄ λ¬Έμ λ μ΅κ·Ό νλμ΄ μμκΈ° λλ¬Έμ μλμΌλ‘ μ€λλ κ²μΌλ‘ νμλμμ΅λλ€. λ μ΄μμ νλμ΄ μμΌλ©΄ νμλ©λλ€. κ·νμ κΈ°μ¬μ κ°μ¬λ립λλ€.
κ°μ₯ μ μ©ν λκΈ
proxyquire μλ:
μ: http://vansande.org/2015/03/22/unit_testing_with_mocks_in_node_js/
λλ λͺ¨μ μꡬ