Как я могу заменить функцию функцией testdouble?
Я хотел бы проверить файл сtestdouble
. Однако у меня есть метод, который я не знаю, как издеваться над файлом здесь. Если бы это был метод класса, я бы использовалMyClass.prototype.method = td.func()
но здесь я попытался использоватьconst helperFunc = td.func('helperFunc')
без везения. Я также пытался использоватьtd.replace
но выдало ошибку.
Можно ли заменить этоhelperFunc
с поддельной функцией, т.е.td.func()
?
Вот файл, который я хочу проверить:
MyClass.js
const helperFunc = (data) => {
return new Promise((resolve, reject) => {
let result = // Work with 3rd party package
resolve(result)
})
}
class MyClass {
method(data, callback) {
return helperFunc(data).then(result => {
return callback(result);
}).catch(err => callback(null, err));
}
}
module.exports = MyClass;
Вот мой тестовый файл
testfile.test.js
const { expect } = require('chai');
const td = require('testdouble');
describe('my test', function () {
let MyClass;
let classInstance;
let finalResult;
before(function () {
MyClass = require('../MyClass.js');
const helperFunc = td.func('helperFunc');
td.when(helperFunc(td.matchers.anything)).thenReturn('fakeData');
classInstance = new MyClass();
const testData = 'testdata';
const callback = (returnData, err) => {
finalResult = returnData;
}
classInstance.method(testData, callback);
})
it('should return fake data', function() {
expect(finalResult).to.equal('fakeData');
})
})