Ich benutze Node-Rest-Client für mein Projekt und ich bin an den Punkt gekommen, wo ich Unit-Tests meiner Klassen, die node-rest-client verwenden, starten möchte. Gibt es Beispiele, wie ich den Client in meinen Tests simulieren kann? Ich verwende Sinon in meinem Unit-Test.Wie kann ich Knoten-Rest-Client Mock Mock?
0
A
Antwort
1
Schritt 1: Exportieren Sie in den Js-Code, den Sie testen, die Node-Rest-Client-Instanz, damit sie für Ihren Testcode verfügbar ist. Zum Beispiel in myApp.js, habe ich dies:
var Client = require('node-rest-client').Client;
var restClient = new Client();
exports.restClient = restClient; //instance now available outside this module
restClient.get(someUrl, ...); //actual node rest client call
Schritt 2: In Ihrem Testcode, erstellen Sie eine Wrapper-Funktion, die eine gefälschte Funktion gibt, und verwenden Sie sinon es in Ihren Zielcode zu verspotten. Auf diese Weise können Sie die Rückgabedaten und den Antwortcode während der Testkonfiguration eingeben.
var nodeRestGet = function (data, statusCode) {
return function (url, cb) {
cb(data, { statusCode: statusCode || 200 });
}
};
sinon.stub(myApp.restClient, 'get').callsFake(nodeRestGet("", 200));
Schritt 3: Schreiben Sie Ihren Testcode. Beachten Sie, dass Sie die Methode wiederherstellen möchten (das Mock entfernen), wenn Sie mehrere Tests ausgeführt werden:
myApp.doThings(); // TEST
myApp.restClient.get.restore(); // removes the mock
Verwandte Themen
- 1. Rhino Mock and Mock allgemein
- 2. Wie Mock-Unit-Test im Mock-Modus?
- 3. Pytest mit Mock/Pytest-Mock
- 4. Wie kann ich Unit-Test/Mock Elasticsearch
- 5. Wie mache ich Mock SpringApplication.run
- 6. Mock HttpContext.Current.User.Identity.Name
- 7. Kann ich eine Moq Mock-Implementierung kopieren?
- 8. Mock-Instanz ist null nach @Mock Anmerkung
- 9. Mock eine Zip-Antwort Fetch-Mock mit
- 10. Mock Networkstream.Read
- 11. C# Mock
- 12. Wie mock Objekte in der Methode erstellt Mock?
- 13. Wie mock @ ngrx/speichern?
- 14. Wie Mock RowMapper?
- 15. Mock IAuthSession.GetOAuthTokens
- 16. Wie Mock HttpResponse für den Web Service (mit JavaHttpClient) Mock?
- 17. Modulinstallation - Mock
- 18. Wie Mock Methode mit optionalen Parameter in Google Mock?
- 19. Kann JMockit MockUp mock toString()?
- 20. Google Mock - Mock Rückgabewert einer (freistehenden) Funktion namens
- 21. Wie rspec mock open-uri?
- 22. Wie Module mock für Winkelprüfung
- 23. Wie eine HTTP-Antwort Mock
- 24. Verwenden des Mock von einem anderen Mock in phpspec zurückgegeben
- 25. Wie Mock ObjectMapper readValue-Methode?
- 26. Wie kann ich Mock zum Testen in Greenlet verwenden?
- 27. Wie mock Microsoft.Office.Interop.Excel.Range mit Moq?
- 28. Python-UnitTesting und Mock: Mock-Funktion aus dem Testfall?
- 29. teilweise Mock für Klasse
- 30. mock adwords api
Dank @JohnW, erhalte ich ** ** cb ist kein Funktionsfehler, können Sie mir bitte helfen darauf. – Praveen
@Praveen, ohne Ihren Code zu sehen, es klingt wie das Problem ist Ihr Zielcode, den Sie testen. Wo ich die obigen Ellipsen in restClient.get (someUrl, ...) setze, müssen Sie eine Callback-Funktion als zweiten Parameter angeben. Wenn Sie Ihren Code teilen, kann ich Ihnen eine definitive Antwort geben. – JohnW
Funktioniert gut mit folgender Änderung. 'var nodeRestGet = function (data, statusCode) { Rücksprungfunktion (url, opts, next) { next (Daten, {statusCode: statusCode || 200}); zurückgeben { on:() => { } }; }; }; ' – Praveen