этот тест проходил до того, как я использовал withSnackbar
.но теперь это не удается, и я действительно не знаю, как это исправить.Так что любая помощь будет оценена.Спасибо.
Вот мой экспорт в компоненте:
export default withSnackbar(StoryApp)
А вот мой тест:
let story = {
Title: "title 1",
body: "body 1",
UserEntityKey: "userEntityKey",
Key: "storyKey"
}
afterEach(() => {
// cleaning up the mess left behind the previous test
MockAxios.reset();
});
test('Story deletes based on mocked backend response', async () => {
window.confirm = jest.fn()
window.confirm.mockReturnValue(1);
let idToken = "asdf"
MockAxios.delete.mockImplementationOnce(() =>
Promise.resolve(story.Key)
)
const storyApp = shallow(<StoryApp />);
storyApp.setState((prev) => {
prev.data.push(story)
return prev
})
// Test without idToken
await storyApp.instance().deleteStory(story)
expect(MockAxios.delete).not.toHaveBeenCalled();
expect(storyApp.state().data.length).toEqual(1)
// Test with idToken
storyApp.setState((prev) => {
prev.user = { idToken: idToken }
return prev
})
await storyApp.instance().deleteStory(story)
expect(MockAxios.delete).toHaveBeenCalledWith(apiUrl + '?key=' + story.Key, { headers: { 'Authorization': idToken } });
expect(storyApp.state().data.length).toEqual(0)
})
А вот вывод:
● Удаление историй на основе ложного ответа бэкэнда
ShallowWrapper::setState() can only be called on class components
101 | const storyApp = shallow(<StoryApp />);
102 |
> 103 | storyApp.setState((prev) => {
| ^
104 | prev.data.push(story)
105 | return prev
106 | })
at ShallowWrapper.setState (node_modules/enzyme/build/ShallowWrapper.js:639:17)
at Object.setState (__tests__/App.test.js:103:12)
at tryCatch (node_modules/regenerator-runtime/runtime.js:62:40)
at Generator.invoke [as _invoke] (node_modules/regenerator-runtime/runtime.js:288:22)
at Generator.prototype.(anonymous function) [as next] (node_modules/regenerator-runtime/runtime.js:114:21)
at asyncGeneratorStep (__tests__/App.test.js:25:103)
at _next (__tests__/App.test.js:27:194)
at __tests__/App.test.js:27:364
at Object.<anonymous> (__tests__/App.test.js:27:97)