我的案例中有关错误的信息深深地存在于响应中,我正试图将我的项目移至redux-toolkit
. 这是以前的样子:
catch(e) {
let warning
switch (e.response.data.error.message) {
...
}
}
Run Code Online (Sandbox Code Playgroud)
问题是redux-toolkit
没有将这些数据放在rejected
动作创建者中,而且我无法访问错误消息,它将他的消息而不是最初的消息:
虽然原始响应如下所示:
那么我怎样才能检索到这些数据呢?
现在我使用这个类型别名:
export type Country = {
name: 'USA' | 'Russia' | 'Bulgaria' | 'Romania' | 'Austria' | 'Great Britain' | 'Italy',
code: 'us' | 'ru' | 'bg' | 'ro' | 'au' | 'gb' | 'it'
};
Run Code Online (Sandbox Code Playgroud)
但它允许创建不正确的对象:
{ name: 'USA', code: 'ru'}
Run Code Online (Sandbox Code Playgroud)
为此目的制作类型的最佳方法是什么?
例如,我想知道已经调度了什么以及参数。动作创建者是异步的,但我不关心它的实现,我只想知道组件是否使用正确的参数调度正确的动作创建者。我尝试过这种方法:
store.dispatch = jest.fn()
Run Code Online (Sandbox Code Playgroud)
但我无法获得任何有用的信息:
我尝试通过这种方式解决问题:
expect(store.dispatch.mock.calls[0].toString()).toBe(requestArticles().toString())
Run Code Online (Sandbox Code Playgroud)
但我不知道这个论点,但我确信有更好的方法来做到这一点。另外值得注意的是,我正在使用react-testing-library,所以我不能使用wrapper.instance().props
Enzyme。