gpt4 book ai didi

typescript - 如何使用 ts-mockito 模拟一个方法?

转载 作者:行者123 更新时间:2023-12-02 16:50:21 27 4
gpt4 key购买 nike

我想通过 ts-mockito@2.5.0 创建类的模拟对象,但我无法正确设置它。

这是人为的测试用例:

import {expect} from "chai";
import {
mock,
when,
} from "ts-mockito";

class MockMe {
public doStuff(): string {
return "I AM THE ORIGINAL VALUE";
}
}

describe("ts-mockito weirdness", async () => {
it("should create a mock with specific return values", async () => {
const mocked = mock(MockMe);

await when(mocked.doStuff()).thenReturn("I AM MOCKED");

const actualReturnValue = mocked.doStuff();

expect(actualReturnValue).to.eq("I AM MOCKED");
});
});

正如测试用例所暗示的,我希望从我的模拟中返回“我被 mock ”的值。

但我得到的是一个 ts-mockito-specifc 对象,它包含如下属性:methodStubCollectionmatchersmocker姓名

Screenshot of unexpected response from ts-mockito

我应该如何设置它按预期工作的模拟?


旁注:这个测试用例只是为了展示我遇到的奇怪行为。这不是我的实际测试。我想在不同服务的单元测试中使用模拟。)

最佳答案

您缺少 instance由于 TypeScript 的技术限制而调用。

import {
instance,
mock,
when,
} from "ts-mockito";

const mockitoMock = mock(MockMe);
const actualInstanceOfMock = instance(mocked).doStuff();
actualInstanceOfMock.doStuff() // will return your mocked value

关于typescript - 如何使用 ts-mockito 模拟一个方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59031876/

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