如何使用 ts-mockito 模拟一个方法?
How to mock a method using ts-mockito?
我想通过 ts-mockito@2.5.0 创建一个 class 的模拟对象,但我无法正确设置它。
这是人为的测试用例:
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");
});
});
正如测试用例所暗示的那样,我希望从我的模拟中获得 "I AM MOCKED" 的 return 值。
但我得到的是一个 ts-mockito-specifc 对象,它包含如下属性:methodStubCollection
、matchers
、mocker
和 name
.
我应该如何设置它按预期工作的模拟?
旁注:这个测试用例只是为了展示我遇到的奇怪行为。这不是我的实际测试。我想在不同服务的单元测试中使用模拟。)
由于 TypeScript 的技术限制,您错过了 instance
调用。
import {
instance,
mock,
when,
} from "ts-mockito";
const mockitoMock = mock(MockMe);
const actualInstanceOfMock = instance(mocked).doStuff();
actualInstanceOfMock.doStuff() // will return your mocked value
我想通过 ts-mockito@2.5.0 创建一个 class 的模拟对象,但我无法正确设置它。
这是人为的测试用例:
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");
});
});
正如测试用例所暗示的那样,我希望从我的模拟中获得 "I AM MOCKED" 的 return 值。
但我得到的是一个 ts-mockito-specifc 对象,它包含如下属性:methodStubCollection
、matchers
、mocker
和 name
.
我应该如何设置它按预期工作的模拟?
旁注:这个测试用例只是为了展示我遇到的奇怪行为。这不是我的实际测试。我想在不同服务的单元测试中使用模拟。)
由于 TypeScript 的技术限制,您错过了 instance
调用。
import {
instance,
mock,
when,
} from "ts-mockito";
const mockitoMock = mock(MockMe);
const actualInstanceOfMock = instance(mocked).doStuff();
actualInstanceOfMock.doStuff() // will return your mocked value