gpt4 book ai didi

javascript - sinon模拟不接听电话

转载 作者:行者123 更新时间:2023-12-03 04:05:11 26 4
gpt4 key购买 nike

我很难理解我做错了什么。

我有一个这样的 JS 类:

export default class A {

constructor(repository) {
this._repository = repository;
}

async process(date) {
// ...

this._repository.writeToTable(entry);
}
}

我正在尝试编写一个使用 sinon.mock

模拟存储库的测试

这是我到目前为止所拥有的:

describe('A', () => {
describe('#process(date)', () => {
it('should work', async () => {

const repository = { writeToTable: () => {} };
const mock = sinon.mock(repository);

const a = new A(repository);

await a.process('2017-06-16');

mock.expects('writeToTable').once();
mock.verify();
});
});
});

但它总是失败

ExpectationError: Expected writeToTable([...]) once (never called)

我已经检查(添加了console.log)并且它正在调用我在测试中定义的对象。

最佳答案

我在本地运行了这个并阅读了 sinonjs.org 上的文档而且你似乎做的一切都是正确的。

我尝试使用 spy 重写您的示例,并最终得到如下结果以通过测试:

import sinon from "sinon";
import { expect } from "chai";

import A from "./index.js";

describe("A", () => {
describe("#process(date)", () => {
it("should work", async () => {
const repository = { writeToTable: sinon.spy() };

const a = new A(repository);

await a.process("2017-06-16");

expect(repository.writeToTable.calledOnce).to.be.true;
});
});
});

关于javascript - sinon模拟不接听电话,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44591059/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com