Request: Unit-Testfälle für die Methode request(url, function(error, response, body)

Erstellt am 18. Apr. 2016  ·  3Kommentare  ·  Quelle: request/request

Hallo zusammen,
In den meisten meiner Dateien habe ich die folgende Methode verwendet -

var request = require('request');
request(url, function(error, response, body) {
    if (!error && response.statusCode === 200) {

Wie stumme ich diese Methode in Unit-Tests?

schon versucht sinon.stub(request), aber das hilft nicht.

Help (please use Stackoverflow) stale

Hilfreichster Kommentar

Versuchen Sie es mit 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));
    });
});

Beispiel: http://vansande.org/2015/03/22/unit_testing_with_mocks_in_node_js/

Oder mock-require

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 */))...
    });
});

Alle 3 Kommentare

@simov hat es bereits versucht, konnte es aber nicht finden, ist jemand schon auf dieses Problem gestoßen?

Versuchen Sie es mit 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));
    });
});

Beispiel: http://vansande.org/2015/03/22/unit_testing_with_mocks_in_node_js/

Oder mock-require

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 */))...
    });
});

Dieses Problem wurde automatisch als veraltet markiert, da es in letzter Zeit keine Aktivität hatte. Es wird geschlossen, wenn keine weitere Aktivität stattfindet. Vielen Dank für Ihre Beiträge.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

victor0402 picture victor0402  ·  4Kommentare

mlegenhausen picture mlegenhausen  ·  4Kommentare

jdarling picture jdarling  ·  3Kommentare

pixarfilmz112 picture pixarfilmz112  ·  3Kommentare

crostine picture crostine  ·  3Kommentare