впервые действительно использую sinon, и у меня возникли некоторые проблемы с библиотекой макетов.
Все, что я пытаюсь сделать, это заглушить / макетировать функцию из класса dao
с именем myMethod
.К сожалению, я получаю ошибку: myMethod is not a function
, которая заставляет меня поверить, что я либо ставлю ключевые слова await/async
в неправильных местах теста, либо я не понимаю, что Sinon заглушает 100%.Вот код:
// index.js
async function doWork(sqlDao, task, from, to) {
...
results = await sqlDao.myMethod(from, to);
...
}
module.exports = {
_doWork: doWork,
TASK_NAME: TASK_NAME
};
// index.test.js
const chai = require("chai");
const expect = chai.expect;
const sinon = require("sinon");
const { _doWork, TASK_NAME } = require("./index.js");
const SqlDao = require("./sqlDao.js");
.
.
.
it("given access_request task then return valid results", async () => {
const sqlDao = new SqlDao(1, 2, 3, 4);
const stub = sinon
.stub(sqlDao, "myMethod")
.withArgs(sinon.match.any, sinon.match.any)
.resolves([{ x: 1 }, { x: 2 }]);
const result = await _doWork(stub, TASK_NAME, new Date(), new Date());
console.log(result);
});
С ошибкой:
1) doWork
given task_name task then return valid results:
TypeError: sqlDao.myMethod is not a function