小编Sco*_*ott的帖子

如何抑制 Jest 测试中的特定错误

我正在尝试抑制 Jest 测试中的特定错误,因为我们计划稍后解决它,但在那之前我们不希望这些错误可能隐藏任何真正的错误。

这些错误发生在整个代码库中,因此我当前的策略是重新连接console.error我们的笑话设置文件中的函数。

我进行了两次不同的尝试,两者都几乎可以工作,但是现在当他们报告一个真正的错误时 - 他们在错误跟踪中添加了一个新行。

尝试1:

const originalError = console.error.bind(console.error);
jest.spyOn(global.console, 'error').mockImplementation((message) => {
  if (
    !message
      .toString()
      .includes(
        'Warning: An update to SettingsPanel inside a test was not wrapped in act'
      )
  ) {
    originalError(message);
  }
});
Run Code Online (Sandbox Code Playgroud)

尝试2:

const { error } = console;
global.console = {
  ...console,
  error: (errorMessage) =>
    !errorMessage
      .toString()
      .includes(
        'Warning: An update to SettingsPanel inside a test was not wrapped in act'
      ) && error(errorMessage),
};
Run Code Online (Sandbox Code Playgroud)

这两个都会记录一个有效的错误 - 即“警告:列表中的每个子项都应该有一个唯一的“键”” - …

javascript unit-testing jestjs

6
推荐指数
1
解决办法
3027
查看次数

React MaterialUI - 单击按钮后在 TextField 组件上设置错误

我有一个输入表单,我想在单击“搜索”按钮后验证输入字段。

我看到的大多数答案都是在用户将其输入表单时实时验证输入。
我不想这样做,因为我需要做的一些验证是一项成本高昂的操作(例如验证 API 密钥),因此在输入时不断检查它不是一种选择。
这也是一个无服务器的单页面应用程序,据我所知 -onSubmit会重新加载页面,所以我没有使用它。

我有一个与此类似的简单表格:

    const [formData, setFormData] = useState({});
    .......
    function handleFormChange(event) {
        let data = formData;
        data[event.target.name] = event.target.value;
        setFormData(data);
    }
    ........
    <form id="search-form" >
       <TextField name="apiKey" label="API Key" onChange={handleFormChange} defaultValue={formData.apiKey} />
       <TextField name='itemName' label="Enter Item" onChange={handleFormChange} />
       <Button name='search-button' onClick={validate} >Search</Button>
    </form>
Run Code Online (Sandbox Code Playgroud)

我不知道要输入什么内容validate()来设置文本字段上的错误或执行搜索。我尝试将一个函数传递到errorprop 中,以检查errors状态变量是否已填充,我尝试使用 refs 来设置错误状态,但我看不到任何可以设置错误状态的函数。

formData 变量将保存当前数据,因此很容易检查“此数据是否有效”,但对于我来说,我无法弄清楚如何手动触发错误状态。

我正在使用 React hooks 仅供参考

javascript validation reactjs material-ui

4
推荐指数
1
解决办法
9986
查看次数