簡體   English   中英

如何使用ts-mockito模擬方法?

[英]How to mock a method using ts-mockito?

我想通過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");
    });
});

就像測試用例所暗示的那樣,我希望模擬程序的返回值是“ I AM MOCKED”。

但是,我得到一個TS-的Mockito-specifc對象,而不是,包含類似性質: methodStubCollectionmatchersmockername

ts-mockito的意外響應的屏幕截圖

我應該如何設置可以按預期工作的模擬程序?


旁注:這個測試用例只是為了展示我正在經歷的怪異行為。 這不是我的實際測試。 我想在單元測試中使用模擬來提供其他服務。)

由於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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM