javascript 禁止在其外部使用屏幕/使用eslint的“no-restricted-syntax”测试

x33g5p2x  于 2023-02-18  发布在  Java
关注(0)|答案(1)|浏览(96)

我再次尝试获取'no-restricted-syntx to work'。我没有使用Prevent screen.findByX without an await with eslint no-restricted-syntax?,但我有另一个需要它的场景。我注意到我们遇到了一些与类似问题相关的问题,解释如下:
不应该在test()/it()块之外进行渲染,因为JSDOM env是全局的(在测试之间共享),并且内部describe()中的清理操作正在清理DOM。
我有这样的代码:

beforeEach(async() => {
  render(<MyLovelyComponent />);
  await waitForElementToBeRemoved(() => screen.getAllByText('dddd'));
});

我想对这里使用的screen发出警告/错误。
我尝试编写'no-restricted-syntax'选择器,也是基于How to forbid a specific named function with ESlint中的一些内容,如下所示:

'no-restricted-syntax':[
  'error',
  {
    message: 'No screen outside of it',
    selector: `FunctionCall[name!="it"] MemberExpression[object.name="screen"]`
  },
],

以下是我目前的尝试:
https://astexplorer.net/#/gist/53f841902242b436121b51ab4673344f/320bfaf0ac537c90fd501a0a969c79c1bb23f838
但似乎没有效果。
我哪里做错了?

qyzbxkaa

qyzbxkaa1#

在写这篇文章的时候,我仔细检查了AST Explorer,得出了:

'no-restricted-syntax':[
  'error',
  {
    message: 'No screen inside beforeEach',
    selector: `CallExpression[callee.name="beforeEach"] MemberExpression[object.name="screen"]`
  },
],

我仍然没有办法在不涉及beforeEach的情况下以其他方式阻止,但这是一个开始!

相关问题