【问题标题】:How can i test onCompleted, onError or onSuccess in a component starting with a Query如何在以 Query 开头的组件中测试 onCompleted、onError 或 onSuccess
【发布时间】:2020-12-18 11:50:55
【问题描述】:

您好,我对测试还很陌生,我不知道如何输入查询的 onCompleted 回调。我在 react-testing-library 中使用 jest。

我需要输入 onCompleted 回调来检查其中的 if 语句。

组件:

...

  return (
    <Query
      query={ALL_STICKS}
      variables={{
        name: inputValue,
        idProcess,
        isExceptional,
        codeClasse: data && data.codeClasse,
        codeSubject: data && data.codeSubject,
        codeCompetence: data && data.codeCompetence
      }}
      notifyOnNetworkStatusChange
      onCompleted={dataVaras => {
        if (
          dataVaras.varas_competentes &&
          dataVaras.varas_competentes.items.length === 1
        ) {
          onChange(dataVaras.varas_competentes.items[0]);
        }
      }}
    >
      {({ data: dataSticks, loading }) => {
        return (

          ...
          
        );
      }}
    </Query>
  );

...

当前的测试套件:

imports ...

describe('SelectStick Component', () => {
  afterEach(cleanup);

  it('should render component', async () => {
    const component = createComponent();

    await wait(0);

    expect(component).toBeDefined();
  });
});

function createComponent(props = {}) {
  const defaultProps = {
    onChange: jest.fn(),
    value: {},
    idProcess: 'II00000020000',
    ...props
  };

  return render(
    <MockedProvider mocks={[sticks]} addTypename={false}>
      <SelectStick {...defaultProps} />
    </MockedProvider>
  );
}

【问题讨论】:

    标签: javascript reactjs unit-testing graphql react-testing-library


    【解决方案1】:

    所以,我想通了。我正在测试 onError 回调并且我传递给模拟组件的变量不完整,我需要做的就是传递我在模拟查询中定义的所有变量。

    这是一个非常初学者的问题,但正如我所说,我是测试 Graphql 查询和突变的新手。

    【讨论】:

    • 您可以在这里发布您的解决方案吗?
    • @nico @nico 抱歉,我不再从事这个项目了,它已经完成并投入生产,但如果您仍在寻找答案,则无法测试 onCompleted 或 onError直接回调。只需使用正确的数据模拟您的请求。例如:在这行代码onCompleted={dataVaras =&gt; {... 如果我的模拟请求返回没有错误的内容,onCompleted 将得到测试,因为它是在查询 ALL_STICKS 的成功请求之后调用的。例如,如果您需要测试 onError,只需使用错误数据模拟您的请求。
    猜你喜欢
    • 2012-06-05
    • 1970-01-01
    • 2022-11-12
    • 1970-01-01
    • 1970-01-01
    • 2021-10-25
    • 1970-01-01
    • 2016-05-13
    • 1970-01-01
    相关资源
    最近更新 更多