- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 Jest 和测试库的新手。我有一个 NavbarContainer 组件,它根据正在使用函数更改的变量 (menuOpen) 呈现一个或另一个按钮。我已经检查过变量在 fireEvent 之后更改了它的值,但是,它似乎没有更新组件。我做错了什么?
这是我的组件
export const NavbarContainer = ({functionality, menuOpen, activeLink}) => {
return (
<div className="navbar-container">
{ menuOpen && <Navbar functionality={functionality} activeLink={activeLink}/> }
{ menuOpen && <Button text="navbar.back" functionality={functionality}></Button> }
{ !menuOpen && <Button text="navbar.menu" functionality={functionality} modificator="back"></Button> }
</div>
);
};
这是按钮
export const Button = ({ text, type = "button", functionality, disabled = false}) => {
return (
<button onClick={functionality} type={type} disabled={disabled}>{i18n.t(text)}</button>
);
};
这是我传递给 NavbarContainer 组件的值和函数
const [menuOpen, setMenuOpen] = useState(false);
const [activeLink, setActiveLink] = useState("");
const openMenu = (link) => {
setMenuOpen(!menuOpen);
setActiveLink(link.toString());
};
这是我的测试
describe("NavbarContainer", () => {
i18n.changeLanguage('cimode');
let component;
let menuOpen = true;
const openMenu = () => {
menuOpen = !menuOpen;
};
beforeEach(() => {
component = render(
<BrowserRouter basename="/">
<NavbarContainer menuOpen={menuOpen} functionality={openMenu} activeLink=""/>
</BrowserRouter>
);
});
it("after click the menu button is shown", async () => {
const backButton = component.queryByText("navbar.back");
await fireEvent.click(backButton);
const menuButton = await component.queryByText("navbar.menu");
expect(menuButton).toBeInTheDocument();
});
});
这是我得到的错误
expect(received).toBeInTheDocument()
the received value must be an HTMLElement or an SVG element.
Received has value: null
最佳答案
由于您的 navbar.menu 在您点击后可能需要几秒钟才能出现,因此您需要使用 findBy
来尝试选择您的项目。这会添加 5 秒的超时时间以尝试查找该项目。如果它在 5 秒后仍未出现,则您的代码可能有其他问题。
如果您希望您的测试是异步的,那么我建议您的第一个调用也是 findBy
而不是 queryBy,因为 queryBy 不是异步调用。
it("after click the menu button is shown", async () => {
const backButton = await component.findyByText("navbar.back");
await fireEvent.click(backButton);
const menuButton = await component.findByText("navbar.menu");
expect(menuButton).toBeInTheDocument();
});
您也可能不需要最后一个 expect 调用,因为如果它无法通过上一个调用找到 navbar.menu 项,那么它无论如何都会失败。如果找到它,也是一样。
关于javascript - fireEvent.click 后组件未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69152950/
我有以下类 ProtokollEvent public class ProtokollEvent extends Event { //variable holds all devices in giv
我一直在尝试用 JavaScript 制作 Battleship 游戏以完成学校作业,但我一直在尝试创建对手 AI。当我点击网格中的单元格时,我创建了一个事件: function addListene
我是 Jest 和测试库的新手。我有一个 NavbarContainer 组件,它根据正在使用函数更改的变量 (menuOpen) 呈现一个或另一个按钮。我已经检查过变量在 fireEvent 之后更
我正在使用 extjs 3 构建自己的类(许可证问题) Ext.ux.MyClass = Ext.extend(Ext.Container, { initComponent: funct
一些简单的事件驱动代码。无论出于何种原因,我似乎无法将“onchange”作为参数传递给 fireEvent()。在 IE 7/8 中引发无效参数错误。这个项目需要是原生的。帮助不大? 自定义事件创建
🙂我正在学习 React 中的测试,但 fireEvent 不会改变我输入的值。不幸的是,我不知道为什么? 我正在渲染 BuyPlace 组件。在这个组件中,我有一个具有输入组件的表单(这些组件只是
我目前正在使用 Jest 测试输入& react-testing-library 。我正在尝试测试 onChange 函数是否在我的输入字段发生更改时触发。这是我的代码示例: const placeH
我有一个按钮,当在 Firefox/Chrome 浏览器中使用 jquery/javascript/Ext JS5 模拟点击这个按钮时。这个按钮会触发它的事件,但是在 IE11 中做同样的事情时,事件
知道下面这行的作用吗? 这里的“Popup”是什么事件? fireEvent('Popup','ok'); 最佳答案 事件通常分为两种类型。 DOMEvent 和 Class.Event。 最常见的是
我发现此链接涵盖了如何创建自定义 Java 事件。 http://www.exampledepot.com/egs/java.util/custevent.html 我不明白的是.. fireEven
我希望我的字段在失焦时提交。 (模糊事件)。触发提交的事件是一个 ENTER 键事件。所以我这样做了: outOfFocus: function(field, event) { console
我通过ajax调用一些文本文件,我需要将其保存在客户端,我找到了一个代码可以帮助我解决这个问题(它可以在Opera,Chrome,FireFox中工作),但在IE 8中它不需要工作时,我在 fireE
我想做什么 我想在某些测试期间将一些自定义属性传递给事件(使用 react-testing-library 和 jest)。我正在使用 fireEvent 函数。我从docs了解到第二个参数中的属性被
你如何制作 fireEvent itemclick商店加载后。 我有这个,但它不起作用: pcfstore.on('load', function(){ //auto select first
我正在测试 ExtJS4,但需要一些帮助... 我有这个 HTML 代码: 这个脚本代码: Ext.addBehaviors({ '#sendButton@click': function
我正在尝试使用 IE 的 fireEvent 方法提交表单。下面是一些简单的测试代码: function fireSubmit () { if (document.createE
我想用 leaflet 在 javascript 中模拟鼠标点击。 我有一张包含几个不同图层的 map 。一些激活弹出窗口。当我用鼠标单击某个项目时,会出现一个弹出窗口。 当我尝试执行以下代码时,它似
在我的应用程序中,Ti.App.addEventListener 执行了多次,甚至调用了一次 fireEvent。 我无法删除 fireEvent。如何删除创建的 fireEvent。 这是我的示例文
我需要在客户端图像 map 上使用 IE 模拟鼠标单击。哪个对象应该调用fireEvent() ?它不能简单地是对象,因为它可以被 2 个不同的 引用s。它不可能是因为我们需要一种方法来判断 img
我一直在尝试在 ExtJs 中的选项卡面板标题上创建上下文菜单,但遇到了一些问题。 最终,我希望它出现在右键单击和左键单击上;目前,右键单击时它看起来很好,但我也无法在左键单击上发生右键单击事件。 我
我是一名优秀的程序员,十分优秀!