簡體   English   中英

Jest Test - 監視命名模塊構造函數

[英]Jest Test - Spy on named module constructor

我正在使用 jest、酶、反應和 rxjs 編寫單元測試。 我像這樣嘲笑 rxjs/ajax。

import { ajax } from 'rxjs/ajax';
jest.mock('rxjs/ajax', () => {
    return {
        ajax: jest.fn().mockImplementation((args) => {
            return {
                subscribe: jest.fn().mockImplementation(args => {
                    return {
                        unsubscribe: jest.fn(),
                    }
                })
            }
        })
    }
})

在我的 componentDidMount() 中,我從 rxjs/ajax 調用添加了訂閱。

    componentDidMount() {

        this.mySubscription = ajax({
            url: `/api/mycontroller/myAction/`,
            method: 'GET',
            headers: {
                Authorization: `Bearer ${Auth.getToken()}`,
                'Content-Type': 'application/json',
            },
        }).subscribe({
            next: (response) => {
                MyService.setData(response.response);
            },
            error: console.log,
        });
    }

我的問題是如何編寫斷言以確保 ajax 模塊中的 url 參數是預期的。

        it("should call ajax with url when it's mounted", () => {
            let spyOn = jest.spyOn(ajax, 'constructor');
            let wrapper = shallow(<MyComponent {...defaultProps} />);
            expect(spyOn).toHaveBeenCalledWith({ url:"/api/mycontroller/myAction/"})
        })

非常感謝

這可以通過調用let spyOn = jest.spyOn(ajax.prototype, 'constructor');

暫無
暫無

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

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