gpt4 book ai didi

reactjs - 如何在 Testcafe 中设置 react props

转载 作者:行者123 更新时间:2023-12-04 15:15:11 24 4
gpt4 key购买 nike

我正在尝试测试一个 react 组件,该组件的属性会在用户登录时发生变化。我无法从 testcafe 套件本身更改登录 Prop ,因为用户只能单击她在电子邮件中收到的神奇链接登录。

鉴于下面的示例组件,我如何测试注销按钮?

测试咖啡馆总是将 isLoggedIn prop 视为 false,并且它不允许在测试时将组件 props 设置为某些自定义值。

header.js

import React from 'react';

const Header = ({ isLoggedIn }) => (
<div>
{isLoggedIn ? (
<h1>text unreachable from testcafe</h1>
<button onClick={logout}>Logout</button>
) : (
<button onClick={login}>Login</button>
)}
</div>
);
export default Header;

test-cafe.js


import { ReactSelector } from 'testcafe-react-selectors';
import { waitForReact } from 'testcafe-react-selectors';

fixture`HEADER`
.page('http://localhost:3000')
.beforeEach(async () => {
await waitForReact();
});

test('Page should load the header', async (t) => {
const App = ReactSelector('App').withProps({ isLoggedIn: true });
const actual = App.find('h1').innerText;
const expected = 'text unreachable from testcafe';
await t.expect(actual).eql(expected);
});

最佳答案

我会稍微改变一下设计,

我会将 loginlogout 函数作为 props 传递给组件,以便于测试它们

const Header = ({ isLoggedIn , login , logout }) => (
<div>
{isLoggedIn ? (
<button onClick={login}>Login</button>
) : (
<button onClick={logout}>Logout</button>
)}
</div>
);

用于测试

const logoutMock = jest.fn();
const component = mount(<Header ... logout={logoutMock} />);
const button = component.find('button').simulate('click');

expect(logoutMock).toBeCalled();

关于reactjs - 如何在 Testcafe 中设置 react props,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64468546/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com