Estoy probando un módulo que importa otra función como dependencia. En la prueba unitaria, he usado el paquete Sinon para eliminar esa dependencia. Ahora estoy usando el método calledOnceWithExactly de Sinon para verificar que esta dependencia se llame exactamente una vez, con un parámetro específico que se le pasa. Parece que mi llamada a calledOnceWithExactly("items") debería devolver verdadero, pero devuelve falso; parece que Sinon cree que se llamó a la dependencia sin pasar ningún parámetro. ¿Alguna idea de por qué? Mi código está abajo.
Más información
createModelStub.calledOnce es 1, lo que confirma que la función se llama exactamente una vez.calledOnceWithExactly("items") a calledOnceWithExactly() , entonces eso devuelve verdadero. Como si Sinon pensara que la función fue llamada sin parámetros.Mi código
Archivo de prueba: cliente/prueba/unidad-pruebas.js
import test from "tape"; // assign the tape library to the variable "test" import sinon from "sinon"; import { saveToDb } from "../src/module-save-to-db.js"; import createModel from "../../server/models/createModel.js"; test("Test of save to database.", async function (t) { const createModelStub = sinon.stub(createModel, "createModel").returns(555); await saveToDb(); console.log(`createModelStub.calledOnce`);// Prints 1. console.log(createModelStub.calledOnceWithExactly("items"));// Prints false, even though createModel is indeed called once with "items" as a parameter. t.end(); });Módulo bajo prueba: client/src/module-save-to-db.js
import { createModel } from "../../server/models/createModel.js"; export function saveToDb() { return createModel("items").then((myModel) => {// createModel called and passed "items" as a parameter. const model = new myModel({ number: 555, all_items: "value1" }); return true; }); }El módulo de dependencia está en: server/models/createModel.js