reactjs - 反应(JEST)测试
问题描述
处理商店项目并尝试测试“确认”页面。在那个页面上有一个button
“发送电子邮件”,它在disabled
属性中有一个功能。该函数的作用是检查查询结果。具体来说,它检查是否有任何项目具有isSelected=true
. 如果至少一个项目具有此属性,则意味着该按钮未被禁用(如果没有任何项目具有此属性,则按钮被禁用)。
这是测试代码:
const mocks = [
{
request: {
query: GET_CONFIRM_DETAILS,
variables: { storeId: testStoreId}
},
result: {
data: {
__typename: 'Data',
store: {
__typename: 'store',
id: '1',
referenceNumber: 'TESTREF',
items: [
{
__typename: 'Option',
id: '1',
name: 'Option 1',
isSelected: true
}
]
}
}
}
}
]
test('opens modal on click', async () => {
const { getByText, queryByTestId } = render(
<MockedProvider mocks={mocks} addTypename={false} resolvers={resolvers}>
<ConfirmPage />
</MockedProvider>
)
const button = getByText('Send email')
fireEvent.click(button)
await waitForUpdate()
expect(queryByTestId('modal')).toBeInTheDocument()
expect(queryByTestId('contact')).toBeInTheDocument()
})
单击按钮时(如果未禁用),会弹出一个模式并显示在屏幕上。这就是测试中断的地方,即使我isSelected
在我的模拟查询中向项目添加了一个属性。
任何想法为什么这个测试会失败?
expect(received).toBeInTheDocument()
received value must be an HTMLElement or an SVGElement.
Received has value: null
> 102 | expect(queryByTestId('modal')).toBeInTheDocument()
解决方案
推荐阅读
- android - 如何从工具窗口android studio中删除模拟器
- java - 使用 Java 将 Docx 转换为 html
- angular - 返回true时路由保护不起作用
- javascript - “classList.toggle”不适用于按钮
- reactjs - 在 react-google-login 中出现“缺少必需的参数 'client_id'”错误
- java - 我想在对话框中实现一个回收器视图
- c# - 类上方的“[Xamarin.Forms.ContentProperty("Contents")]”实际上在做什么?
- javascript - 具有相同国家代码的国家/地区代码选择下拉问题
- angular - 任何人都可以通过使用角度材料表来帮助如何使用cookie来存储列宽吗?
- vb.net - 在 vb.Net 中 FindInFiles 搜索的字节位置