рдирдорд╕реНрддреЗ,
рдореЗрд░реА рдЕрдзрд┐рдХрд╛рдВрд╢ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдореИрдВрдиреЗ рдиреАрдЪреЗ рджреА рдЧрдИ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ -
var request = require('request');
request(url, function(error, response, body) {
if (!error && response.statusCode === 200) {
рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдореИрдВ рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ рдХреИрд╕реЗ рд░реЛрдХреВрдВ?
рдкрд╣рд▓реЗ рд╕реЗ рд╣реА sinon.stub (рдЕрдиреБрд░реЛрдз) рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рд╡рд╣ рдорджрдж рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред
@ рд╕рд┐рдореЛрд╡ рдиреЗ рдкрд╣рд▓реЗ рд╣реА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдкрддрд╛ рдирд╣реАрдВ рд▓рдЧрд╛ рд╕рдХрд╛, рдХреНрдпрд╛ рдХреЛрдИ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЖрдпрд╛ рдерд╛?
рдкреНрд░реЙрдХреНрд╕реАрдХреНрд╡рд╛рдпрд░ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:
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 */))...
});
});
рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреБрд░рд╛рдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рд╣рд╛рд▓ рдХреА рдЧрддрд┐рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реИред рдЖрдЧреЗ рдХреЛрдИ рдЧрддрд┐рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реЛрдиреЗ рдкрд░ рдЗрд╕реЗ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЖрдкрдХреЗ рдпреЛрдЧрджрд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдкреНрд░реЙрдХреНрд╕реАрдХреНрд╡рд╛рдпрд░ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:
рдЙрджрд╛рд╣рд░рдг: http://vansande.org/2015/03/22/unit_testing_with_mocks_in_node_js/
рдпрд╛ рдирдХрд▓реА-рдЖрд╡рд╢реНрдпрдХрддрд╛