Jest Spott ist wirklich verwirrend mich jetzt.Jest Mocking - Einfacher Mock
Ich habe den folgenden Code in meinem notifications.js Modul:
// Dispatch notifications to MQTT end point
function dispatcher(shipment) {
mqttclient.publish('notification', JSON.stringify(shipment));
return console.info('Notification dispatched.');
}
exportiere ich das so ist es für meine Tests zur Verfügung:
module.exports = { notificationProcessor, notificationDispatch, dispatcher };
Ich möchte die Implementierung dieser Funktion ändern während meiner Tests, so dass das mqqtclient.publish -Ereignis nicht ausgelöst wird.
Ich habe versucht, das gesamte mqtt npm-Modul zu verhöhnen, das auch Teil dieser Datei ist, aber es wird ziemlich beteiligt, also habe ich die Dispatcher-Funktion von meinem Hauptcode getrennt, damit ich mich darauf konzentrieren konnte.
Dispatcher wird von notificationProcessor aufgerufen, wenn eine Benachrichtigung identifiziert wird. In meiner Testdatei gebe ich dem notificationProcessor einfach eine E-Mail, die geparst und dann an den Dispatcher ausgegeben wird.
Wie gehe ich über die Umsetzung dieser einfachen Funktion spotten?
hat eine Antwort gepostet, aber vermutlich möchten Sie dies tun, weil Sie nicht möchten, dass der mqttclient eine Benachrichtigung veröffentlicht. Warum verspotten Sie in diesem Fall nicht stattdessen mqttclient.publish? –
Yeap genau. Ich habe versucht, das .publish zu verspotten, aber es war ein wenig jenseits meines Wissens. Ich verwende npm mqtt im Vanilla-Format. Ich kann mock.connect, aber dann wird dies zu mqttclient zugeordnet, die wiederum eine MqttClient-Funktion mit dem Prototyp. Publish – munkee
Ich denke, diese Seite erklärt, was ich tun muss https://facebook.github.io/jest/docs/manual- mocks.html Ich glaube, ich habe die Verwendung des Mocks neben dem Ordner mqtt node_modules verpasst. – munkee