У меня возникла проблема, пытаясь убедиться, что Q.ninvoke
вызывается с аргументами, которые я передаю. Я новичок в тестировании с Sinon, Mocha и Chai. Я пробовал все, что нашел в Интернете, уже 2 дня, и я до сих пор не могу пройти тест. Что я делаю не так?
Это мой тестируемый код.
var cuid = require('cuid');
var fs = require('fs');
var Q = require('q');
var AWS = require('aws-sdk');
var S3 = new AWS.S3();
module.exports = {
initialize: initialize
};
function initialize(options) {
return Q.nfcall(fs.readFile, options.path).then(function (file) {
var fileParams = {
Bucket: options.bucket,
Key: options.name,
Body: file,
ContentType: options.contentType
};
return Q.ninvoke(S3, 'upload', fileParams).then(function(data){
return data.Location;
});
});
}
Вот мой тест.
describe.only('when a file is read successfully', function() {
var spy;
beforeEach(function() {
spy = chai.spy.on(Q, 'ninvoke');
sinon.stub(Q, 'nfcall').withArgs(fs.readFile, fileParams.path).returns(Q.resolve(file));
});
it('Q.ninvoke should be called with args', function() {
UploadCommand.initialize(fileParams)
expect(spy).to.have.been.called.with(S3, 'upload', params);
});
});
Это ошибка, которую я получаю.
1) UploadCommand .initialize при успешном чтении файла Q.ninvoke следует вызывать с аргументами: AssertionError: ожидается, что {Spy} будет вызван с [Array(3)]