Verspottung des JavaScript-Konstruktors mit Sinon.JS
Ich würde gern unit-Tests die folgenden ES6-Klasse:
//service.js
const InternalService = require('internal-service');
class Service {
constructor(args) {
this.internalService = new InternalService(args);
}
getData(args) {
let events = this.internalService.getEvents(args);
let data = getDataFromEvents(events);
return data;
}
}
function getDataFromEvents(events) {...}
module.exports = Service;
Wie kann ich verspotte den Konstruktor mit Sinon.JS um zu verspotten getEvents
von internalService
zu testen getData
?
Schaute ich Javascript: Mocking Konstruktor mit Sinon aber war nicht in der Lage, extrahieren Sie eine Lösung.
//test.js
const chai = require('chai');
const sinon = require('sinon');
const should = chai.should();
let Service = require('service');
describe('Service', function() {
it('getData', function() {
//throws: TypeError: Attempted to wrap undefined property Service as function
sinon.stub(Service, 'Service').returns(0);
});
});
Kommentar zu dem Problem - Öffnen
Werfen Sie einen Blick auf diese Frage: Javascript: Mocking Konstruktor mit Sinon.
@sdgluck ich Tat, aber ich war nicht in der Lage, extrahieren Sie die Lösung für meinen Fall
Möglich, Duplikat der Javascript: Mocking Konstruktor mit Sinon
InformationsquelleAutor der Frage krl | 2015-09-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie entweder einen namespace erstellen, oder erstellen Sie einen stub-Instanz, die mit
sinon.createStubInstance
(dies wird nicht auf den Konstruktor).Erstellen Sie einen namespace:
Erstellen eines stub-Instanz:
InformationsquelleAutor der Antwort victorkohl
Seit
sinon.createStubInstance
entfernt wurde, aus neuesten Versionen von Sinon, würde ich vorschlagen, stubbing einzelnen Instanz-Methoden über den Prototyp, bis der gewünschte Effekt erreicht wird. So etwas wie dieses:InformationsquelleAutor der Antwort Paweł Gościcki