Как заглушить cache.get () узла кеша? - PullRequest
1 голос
/ 08 октября 2019

Я пишу модульный тест для функции, которая использует node-cache. В следующей функции

  1. Я хочу получить строку, возвращаемую в первом cache.get
  2. массив во втором 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

Так что у меня есть вопросы:

  1. Кто-нибудь знает, как заглушить cache.get() с mocha, chai или * 1029? *? Если да, поделитесь пожалуйста, как вы это делаете?
  2. Возможно ли заглушить разные возвращаемые значения аргументом cache.get()?
...