Создание запроса заглушки с sinon в мокко

я используюmocha чтобы проверить некоторые классы, и мне нужно создать заглушкуrequest библиотека.

я используюsinonи я могу создать заглушкуrequest.get метод, но я не могу создать заглушкуrequest метод (HTTP-вызовы пытаются подключиться к серверу). Как я прочитал,request.get это псевдоним дляrequest но когда я заглушаюrequest.get это не влияет наrequest звонки.

Этот код работает (используяrequest.get):

В тестах:

request = require 'request'

describe "User test", ->
  user = {}
  before (done) ->
    user = new test.user('Ander', 18)    
    sinon.stub(request, 'get').yields(null, {statusCode: 200}, 'foo')        
    done()
  after (done) ->
    request.get.restore()
    done()
  it "testing server response", ->
    user.getData().should.equal 'ander'

В источнике:

request = require 'request'

class User
  contructor(@name, @age): ->
  getData: ->
    mydata = ''
    request.get 'http://127.0.0.1:8080/', (err, response, body) ->        
      if not err and response.statusCode == 200
        mydata = body
      else
        err = throw new Error "Errorea"
    mydata

Но это не работает (пытается подключиться к указанному URL):

В тестах:

request = require 'request'

describe "User test", ->
  user = {}
  before (done) ->
    user = new test.user('Ander', 18)    
    sinon.stub(request, 'Request').yields(null, {statusCode: 200}, 'foo')
    #Creating the stub this way, doesn't work neither
    #sinon.stub(request, 'get').yields(null, {statusCode: 200}, 'foo')
    done()
  after (done) ->
    request.Request.restore()
    done()
  it "testing server response", ->
    user.getData().should.equal 'ander'

В источнике:

request = require 'request'

class User
  contructor(@name, @age): ->
  getData: ->
    mydata = ''
    request 'http://127.0.0.1:8080/', (err, response, body) ->        
      if not err and response.statusCode == 200
        mydata = body
      else
        err = throw new Error "Errorea"
    mydata

Какой правильный способ создать заглушку дляrequest вызов? Какой метод нужно заглушить?

Ответы на вопрос(4)

Ваш ответ на вопрос