Request: حالات اختبار الوحدة لطريقة الطلب (عنوان url ، الوظيفة (خطأ ، استجابة ، نص)

تم إنشاؤها على ١٨ أبريل ٢٠١٦  ·  3تعليقات  ·  مصدر: request/request

تحية للجميع،
في معظم ملفاتي التي استخدمتها أدناه -

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

كيف أقوم بإيقاف هذه الطريقة في اختبار الوحدة؟

جربت بالفعل sinon.stub (طلب) ، لكن هذا لا يساعد.

Help (please use Stackoverflow) stale

التعليق الأكثر فائدة

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

ال 3 كومينتر

لقد حاول صادف أي شخص هذه المشكلة بالفعل؟

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

تم وضع علامة على هذه المشكلة تلقائيًا على أنها قديمة نظرًا لعدم وجود نشاط حديث لها. سيتم إغلاقه إذا لم يحدث أي نشاط آخر. شكرا لمساهماتكم.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

ghost picture ghost  ·  3تعليقات

ghost picture ghost  ·  3تعليقات

jdarling picture jdarling  ·  3تعليقات

crostine picture crostine  ·  3تعليقات

victor0402 picture victor0402  ·  4تعليقات