Я пишу модульный тест для функции, которая использует node-cache
. В следующей функции
- Я хочу получить строку, возвращаемую в первом
cache.get
- массив во втором
cache.get
Обратите внимание, что я удалил некоторые части кода из testFunction, так как это не относится к моему вопросу.
const NodeCache = require('node-cache');
const cache = new NodeCache();
...
const testFunction = () => {
let myStringCache = cache.get('cacheName1');
let myArrayCache = cache.get('cacheName2');
... Do something with caches ...
return 'return something';
}
...
module.exports = {
...,
testFunction,
...
}
Я создал следующий тест
describe('sample test with testFunction() ', ()=>{
let stubCache;
let stub;
before((done)=>{
sandbox = sinon.createSandbox();
stubCache = sandbox.stub(cache, 'get');
stubCache.withArgs('cacheName1').returns('sample string');
stubCache.withArgs('cacheName2').returns([1,2,3,4,5,6]);
stub = proxyquire('./filelocation.js',{
'node-cache': stubCache
});
done();
});
it('should not throw error',(done)=>{
chai.expect(stub.testFunction()).not.to.throw;
});
})
Я гуглил, и есть некое частичное решение использовать proxyquire
, чтобы заглушить значение. но похоже, что это делает заглушку, но это не то, что я хотел. Это заглушки на NodeCache
, но cache
Так что у меня есть вопросы:
- Кто-нибудь знает, как заглушить
cache.get()
с mocha
, chai
или * 1029? *? Если да, поделитесь пожалуйста, как вы это делаете? - Возможно ли заглушить разные возвращаемые значения аргументом
cache.get()
?