[英]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.