0

同じファイル内の別の関数が呼び出すエクスポートされた関数をスパイしようとしています。

Jestにスパイをまったく使用させることができないようです。

mockImplementation と mockReturnValue を混ぜて試してみました。

ユーティリティ.ts:

export const func1 = (x: number) => {
    const y = x + 1
    return y
}

export const func2 = (a: number) => {
    const b = a + 2
    return b
}

export const func3 = (x: number, y: number) => {
    const foo = func1(x)
    const bar = func2(y)
    return foo + bar
}

utils.test.ts:

import * as sut from './utils'

describe('test', () => {
    test('func3 spys', () => {
        let func1Spy: jest.SpyInstance
        let func2Spy: jest.SpyInstance
        func1Spy = jest.spyOn(sut, 'func1').mockImplementation(() => 8)
        func2Spy = jest.spyOn(sut, 'func2').mockImplementation(() => 10)
        const result = sut.func3(1, 2)
        expect(func1Spy).toHaveBeenCalled()
        expect(func2Spy).toHaveBeenCalled()
        expect(result).toBe(6)
    })
})

予想される動作: Jest は、スパイされた関数が呼び出されたことを確認します 実際の出力:

Expected number of calls: >= 1
Received number of calls:    0

スパイ コール アサーションをコメント アウトすると、関数が正しく実行されているため、合格テストが得られます。スパイがいなくても

4

0 に答える 0