我如何测试这个?
How do I test this?
我是 Jest 和 react-testing-library 的新手,所以希望这个问题的解决方案很简单。
测试通过 'onChange' 属性返回的值的正确方法是什么?
describe("Component.js", () => {
test("return correct data", () => {
render(
<Component
onChange={(value) => console.log(value)}
/>
);
});
});
我想为 'value' 做这样的事情。
expect(value).toBe(50);
为了简单起见,假设 Component.js 看起来像这样。
const Component = ({onChange}) => {
return (
<button onClick={() => onChange(50)}></button>
)
}
您可以尝试类似的方法:
const Component = ({onChange}) => {
return (
<button onClick={() => onChange(50)}>CustomButton</button>
)
}
describe("Component.js", () => {
test("return correct data", () => {
const onChangeHandler = jest.fn();
render(
<Component onChange={onChangeHandler} />
);
fireEvent.click(
screen.getbyText(/CustomButton/)
);
expect(onChangeHandler).toBeCalledWith(50);
});
});
以上内容可能需要修改才能适用于您的用例。
只需向组件传递一个模拟函数并测试它是否在按钮更改时被调用(尽管我假设您将对按钮使用 onClick)。您可能还需要添加一个 testId 或某种方式来定位组件中的按钮。
describe("Component.js", () => {
test("return correct data", () => {
const spy = jest.fn();
render(
<Component
onChange={spy}
/>
);
fireEvent.change(screen.getByTestId('button'));
expect(spy).toHaveBeenCalledWith(50);
});
});
和组件
const Component = ({onChange}) => {
return (
<button
data-testid = 'button'
onClick={() => onChange(50)}></button>
)
}
我是 Jest 和 react-testing-library 的新手,所以希望这个问题的解决方案很简单。
测试通过 'onChange' 属性返回的值的正确方法是什么?
describe("Component.js", () => {
test("return correct data", () => {
render(
<Component
onChange={(value) => console.log(value)}
/>
);
});
});
我想为 'value' 做这样的事情。
expect(value).toBe(50);
为了简单起见,假设 Component.js 看起来像这样。
const Component = ({onChange}) => {
return (
<button onClick={() => onChange(50)}></button>
)
}
您可以尝试类似的方法:
const Component = ({onChange}) => {
return (
<button onClick={() => onChange(50)}>CustomButton</button>
)
}
describe("Component.js", () => {
test("return correct data", () => {
const onChangeHandler = jest.fn();
render(
<Component onChange={onChangeHandler} />
);
fireEvent.click(
screen.getbyText(/CustomButton/)
);
expect(onChangeHandler).toBeCalledWith(50);
});
});
以上内容可能需要修改才能适用于您的用例。
只需向组件传递一个模拟函数并测试它是否在按钮更改时被调用(尽管我假设您将对按钮使用 onClick)。您可能还需要添加一个 testId 或某种方式来定位组件中的按钮。
describe("Component.js", () => {
test("return correct data", () => {
const spy = jest.fn();
render(
<Component
onChange={spy}
/>
);
fireEvent.change(screen.getByTestId('button'));
expect(spy).toHaveBeenCalledWith(50);
});
});
和组件
const Component = ({onChange}) => {
return (
<button
data-testid = 'button'
onClick={() => onChange(50)}></button>
)
}