Ich muss storeDocument Funktion testen, wenn debug = false die createStorageDocument aufrufen wird. Aber für meine folgende Test-Code gibt einen Fehler 'TypeError: Versucht, undefinierte Eigenschaft createStorageDocument als Funktion'Mohca Testfehler
Was mache ich falsch?
Und ich würde eine Lösung bevorzugen, stub fetch innerhalb createStorageDocument Funktion anstelle von createStorageDocument selbst, Kann jemand erklären, wie zu tun? Ich bin sehr neu in Mokka und node.js
import fetch from 'node-fetch';
import documentStorageResponseMock from '../../../test/mock/documentStorageResponseMock';
const storageGatewayUrl = 'url';
const storageGatewayApiKey = 'key';
/**
* Merge storage id into booking response.
*
* @param booking
* @param documentId
* @returns {*}
*/
function mergeDocumentId(booking, documentId) {
const mergedBooking = booking;
mergedBooking.successfulBooking.documentId = documentId.id;
return mergedBooking;
}
/**
* @param labelledBooking
*/
function createStorageDocument(labelledBooking) {
fetch(storageGatewayUrl,
{
method: 'POST',
body: {
document: labelledBooking,
},
headers: {
ContentType: 'application/json',
'x-api-key': storageGatewayApiKey,
},
})
.then((response) => {
if (response.ok === false) {
throw new Error('Failed to create the document!');
} else {
return response.json();
}
}).catch((err) => {
throw err;
});
}
/**
* Save booking response and add the document id to the response.
*
* @param labelledBooking
* @param debug
* @param callback
*/
export default function storeDocument(labelledBooking, debug = false, callback) {
if (debug) {
callback(
null,
mergeDocumentId(labelledBooking, documentStorageResponseMock())
);
return;
}
callback(null, mergeDocumentId(labelledBooking, createStorageDocument(labelledBooking)));
}
import storeDocument from '../../../lib/documents/storeDocument';
const chai = require('chai');
const expect = chai.expect;
const sinon = require('sinon');
chai.use(require('dirty-chai'));
chai.use(require('chai-fuzzy'));
describe('merge document storage id', function() {
before(function(callback) {
sinon.stub(storeDocument, 'createStorageDocument', function (params, callback) {
return ({id: '1087449a-1248-4430-9bcb-5a61b2766020'})
});
});
it('it creates and appends document id to booking when storage gateway is provided ', function(done) {
storeDocument({
integrationId: 'testing',
successfulBooking: {
integrationServiceId: 'service-id',
bookingReference: '#ref',
shippingTaxInclusiveCharge: { amount: 10, currency: 'EUR' },
pricedAt: '2016-05-20T15:00:00Z',
documentation: {
labelDocument: 'ero32ukj32hr3h'
}
}
},
false,
(error, booking) => {
expect(booking.successfulBooking.bookingReference === '#ref').to.be.true;
expect(booking.successfulBooking.documentation !== undefined).to.be.true;
expect(booking.successfulBooking.documentId !== '').to.be.true;
done();
});
});
});
Dies erfordert eine Menge Arbeit. Erstens, warum gibt 'storeDocument' kein Versprechen zurück? –
Ich begann gerade node.js und immer noch das Wissen und in diesem Projekt verwendeten wir nicht Promise. – Shaolin