问题描述
我在React应用程序中有一个页面,其工作方式如下(尝试不转储大量代码):
首先,测试项目具有有效价格。输入空白价格的测试通过:
it("should show an error and not fire the callback when you try and save a blank price",() => {
clickFirstItem(wrapper);
setFirstPrice(wrapper,""); // set the price to blank
expect(wrapper.find(".alert-danger").length).toBe(0);
wrapper.find(".btn-primary").simulate("click");
expect(wrapper.find(".alert-danger").length).toBe(1);
expect(onSave).not.toHaveBeenCalled();
});
但是输入无效价格的测试失败,并发出警告:“警告:测试内部对Services的更新未包含在act(...)中”:
it("should show an error and not fire the callback when you try and save an invalid price","xxx");
expect(wrapper.find(".alert-danger").length).toBe(0);
wrapper.find(".btn-primary").simulate("click");
expect(wrapper.find(".alert-danger").length).toBe(1); // this is failing
expect(onSave).not.toHaveBeenCalled();
});
是的,当我将价格设置为“ xxx”时,我确定我的组件显示错误。
我尝试使用act()
as described on the React site,但是它仍然失败,并发出'act'警告:
it("should show an error and not fire the callback when you try and save an invalid price",() => {
let container = document.createElement("div");
document.body.appendChild(container);
act(() => {
ReactDOM.render(<ProductsPage items={itemsData} onSave={onSave} />,container);
});
container.querySelector("table tbody tr:first-of-type").dispatchEvent(new MouseEvent("click",{ bubbles: true }));
expect(container.querySelectorAll(".alert-danger").length).toBe(0);
act(() => {
container.querySelectorAll("input[type='text']")[0].value = "xxx";
});
container.querySelector(".btn-primary").dispatchEvent(new MouseEvent("click",{ bubbles: true }));
expect(container.querySelectorAll(".alert-danger").length).toBe(1); // this is failing
document.body.removeChild(container);
container = null;
});
感谢您的帮助。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)