javascript 在jest和enzyme中检查按钮文本

to94eoyn  于 2023-01-11  发布在  Java
关注(0)|答案(4)|浏览(113)

我有下面的react-native测试代码。

it('should render a <BorderlessButton />', () => {
    expect(wrapper.find(BorderlessButton)).toHaveLength(1);
    expect(wrapper.find(BorderlessButton).props.text.toEqual('D'));
  });

这个不能正常工作,我想做的是检查按钮文字,怎么做呢?

xzlaal3s

xzlaal3s1#

我认为我们需要用.props()替换.props,同样toEqual的语法应该是这样的-:

expect(wrapper.find(BorderlessButton).props().text).toEqual('D');
wsewodh2

wsewodh22#

在我的例子中,它使用了以下语法

expect(wrapper.find(BorderlessButton).text()).toEqual('D');
edqdpe6u

edqdpe6u3#

describe("Test Button component", () => {
  let container = null;
  let clickFn = null;
  beforeEach(() => {
    clickFn = jest.fn();
    container = shallow(<Button buttonAction={clickFn} value="send" />);
  });
  it("button value", () => {
    
    expect(container.find("button").props().value).toEqual("send");
  });
});
qyuhtwio

qyuhtwio4#

根据Jest快速入门文档:

test('loads and displays greeting', async () => {
  render(<Fetch url="/greeting" />)

  expect(screen.getByRole('heading')).toHaveTextContent('hello there')
  expect(screen.getByRole('button')).toBeDisabled()
})

看起来***toHaveTextContent***方法应该适合您。
就我个人而言,我不对项目使用getByRole,而通常使用getByTestId。
它看起来像这样:

expect(screen.getByTestId('button-test-id')).toHaveTextContent('value')

相关问题