reactjs - 如何在 Jest 单元测试中获取 React 道具的值?
问题描述
我有一个这样的组件:
export const TransactionReason = ({
changeReason,
reason
}) => {
const handleNext = () => {
if (!reason)
changeReason({
value: defaultReason
});
}
return (
<View>
<Picker
testID='reasonPicker'
selectedValue={reason?.code}
onValueChange={(value) => changeReason({
code: value,
value: value
})}
>
<Button
testID='reasonButton'
onPress={handleNext}
/>
</View>
);
我changeReason
在我正在测试的代码中调用了一个动作。该动作更改了名为 的道具的值reason
。因此,在我的测试中,我正在使用以下命令触发操作:
const changeReason = jest.fn();
const rendered = render(
<TransactionReason
changeReason={changeReason}
reason={null}
/>
);
const reasonNext = rendered.getByTestId('reasonButton');
fireEvent.press(reasonNext);
// the action changeReason has been called
// expect(rendered.props) ?
所以在这里我想检查reason
.
在其他测试中,我一直在测试道具:
expect(Picker.props.someProp).toEqual('Desired value);
但在这些情况下,这someProp
在组件中是明确的:
<Picker someProp={'a value'} />
当我尝试访问时,我得到了并且未定义:
expect(rendered.props.reason).toEqual('Desired value);
请问有什么提示吗?
解决方案
推荐阅读
- c++ - 按顺序将节点插入到排序的双向链表中
- java - 创建一个很长的字符串并克服运行时
- oauth-2.0 - Google OAuth2.0 是否支持 grant_type=password?
- mysql - 关于 squel 的编码错误
- ruby-on-rails - 为整个 Rails 应用程序更改 CSV 的列分隔符
- javascript - 如何在 $_get 之后传递变量
- modelica - Modelica:识别不稳定/循环模式并发出警告
- azure-data-factory - 数据工厂 - 将字段附加到 JSON 接收器
- git - 如何将先前提交的更改推送到基于先前提交的新分支?
- r - 当您没有完整的值列表或列表太长时,如何将行转换为 Athena 中的列