Erstellen eines Anfrage-Stubs mit Sinon in Mokka
Ich bin mit mocha
zum testen einige Klassen und ich brauche zum erstellen einer stub von request
Bibliothek.
Ich bin mit sinon
und ich bin in der Lage, erstellen Sie einen stub, der request.get
Methode, aber ich bin nicht in der Lage, erstellen Sie einen stub, der request
- Methode (http-Aufrufe versuchen, eine Verbindung zu einem server). Als ich gelesen habe, request.get
ist ein alias für request
aber wenn ich stub request.get
es hat keinen Einfluss auf request
Anrufe.
Dieser code funktioniert (mit request.get
):
In tests:
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'
In der Quelle:
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
Aber das funktioniert nicht (versucht, eine Verbindung zu der angegebenen url):
In tests:
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'
In der Quelle:
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
Welches ist der richtige Weg, um erstellen Sie einen stub für request
nennen? Das ist die Methode, die stubed?
InformationsquelleAutor der Frage Ander2 | 2013-11-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Obwohl
request
ist eine große Bibliothek, es ist kein gutes Beispiel für eine gut strukturierte API. Und da Modulrequest
ist definiert als eine Funktion mit zusätzlichen Methoden (ähnlich wieexpress
), als das, was ich weiß, Sie können nicht erstellen stub für die Funktionrequest
mitsinon
.Die beste Sache, die Sie tun können, ist zu vermeiden, um
request
- Funktion in Ihrem code, und verwenden Sie nurrequest.get
request.post
usw., dem können Sie leicht stub.Erstellen stub für
Request
in deinem zweiten Beispiel nicht helfen, weil Request ist nicht eine Methode finden Quellcode.InformationsquelleAutor der Antwort ivoszz
Falls jemand noch auf der Suche nach einer Antwort für dieses, wie es aussieht, können Sie erstellen Sie einen stub für Ihre Anfrage mit sinon:
mehr details finden Sie hier
InformationsquelleAutor der Antwort Bianca
Wie bereits in einer der Antworten auf die Frage Wie zum Hohn Anfrage-und Antwort-in nodejs testen middleware/Controller?die Knoten-mocks-http - Paket bietet eine Methode zum erstellen von Anfrage-und Antwort-mocks.
InformationsquelleAutor der Antwort P Walker
Eine andere Lösung wäre die Erzeugung einer stub mit sinon Modul und die Anfrage Abhängigkeit in dem entsprechenden Modul können überschrieben werden, mithilfe proxyquire.
Für mehr info, überprüfen Sie diesen Artikel über das Unit-Testen mit Mocks in Knoten
InformationsquelleAutor der Antwort Magesh