首页 > 解决方案 > 如何在 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);

请问有什么提示吗?

标签: reactjsjestjs

解决方案


推荐阅读