标签: ts-mockito

如何使用 Jest 测试 void 方法

我想测试记录器是否正确递增(使用 Jest)。查看下面的代码,这意味着我想检查增量(1)(意味着 void 的内容myMethod)是否被调用。

// myScript.ts
import dd from 'datadog-metrics';

export class MyClass { 
    private bufferedMetricsLogger: dd.BufferedMetricsLogger; 

    constructor(bufferedMetricsLogger: dd.BufferedMetricsLogger) { 
        this.bufferedMetricsLogger = bufferedMetricsLogger; 
    } 

    public myMethod(myInput: String): void { 
        this.bufferedMetricsLogger.increment('my.key.name', 1, [`myTag:${myInput}`]);  // (1)
    }
}

// myScript.test.ts
import { mock, instance, verify } from 'ts-mockito'; 
import { BufferedMetricsLogger } from 'datadog-metrics'; 
import { myClass } from 'path/to/myScript'; 

describe('Testing MyClass', () => { 
    it('verify that myMethod increments', () => { 
        const mockedBufferedMetricsLogger: BufferedMetricsLogger = mock(BufferedMetricsLogger); 
        const …
Run Code Online (Sandbox Code Playgroud)

javascript void typescript jestjs ts-mockito

6
推荐指数
1
解决办法
312
查看次数

tsmockito - 如何模拟采用 lambda 参数的函数

我有一个接受 lambda 的函数(并且 lambda 也接受一个参数)。我如何模拟该功能?

在下面的示例中,我试图模拟connection.xmppStanzas

示例类:

type Matcher<T> = (t: T) => boolean;

const myMatcher: Matcher<Element> = (id: string) => ...;

class SomeClass {
    constructor(private readonly idSource: IdSource,
                private readonly connection: XmppConnection) {}

    doSomething() {
        const id = this.idSource.getId();
        this.connection.xmppStanzas(myMatcher(id)).pipe(
            ...do something with the stanza
        );
    }

}
Run Code Online (Sandbox Code Playgroud)

测试SomeClass

describe('SomeClass', () => {
    let idSource: IdSource;
    let connection: XmppConnection;
    let instance: SomeClass;

    beforeEach(() => {
        idSource = mock(idSource);
        connection = mock(XmppConnection);

        instance = new SomeClass( …
Run Code Online (Sandbox Code Playgroud)

mocking typescript ts-mockito

5
推荐指数
0
解决办法
622
查看次数

如何使用 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");
    });
});
Run Code Online (Sandbox Code Playgroud)

正如测试用例所暗示的那样,我希望从我的模拟中返回“I AM MOCKED”的返回值。

但是,我得到一个TS-的Mockito-specifc对象,而不是,包含类似的属性:methodStubCollectionmatchersmocker,和name

来自 ts-mockito 的意外响应的屏幕截图

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


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

unit-testing mocking typescript ts-mockito

2
推荐指数
1
解决办法
4785
查看次数