【问题标题】:JSLint is throwing an Error - Expected an assignment or function call and instead saw an expressionJSLint 抛出一个错误 - 期望一个赋值或函数调用,而是看到一个表达式
【发布时间】:2017-12-25 18:15:03
【问题描述】:

我正在尝试为组件编写测试用例。测试用例正在通过。但是 JS lint 困扰着我。它抛出一个错误 - :期望一个赋值或函数调用,而是看到一个表达式

错误来了:expect(dummyOutput.find('h1.screen-reader-text')).to.exist;

我的完整测试用例代码如下。谁能帮我解决这个错误吗?

import React from 'react';
import { shallow } from 'enzyme';
import Page from './page';

const props = {
  pageLayout: 'article',
  theme: 'test-theme',
  header: {},
  footer: {},
  singleAds: {},
  siteMeta: { copyright_text: '©COPYRIGHT CONTENT HERE' },
};

const dummyProps = {
  pageLayout: 'dummy_text',
  theme: 'test-theme',
  header: {},
  footer: {},
  singleAds: {},
  siteMeta: { copyright_text: '©COPYRIGHT CONTENT HERE' },
};

const specs = () => describe('Page Layout', () => {
  describe('Renders', () => {
    const wrapper = shallow(<Page {...props} />);
    const dummyOutput = shallow(<Page {...dummyProps} />);

    it.only('should not return H1 tag', () => {
      expect(wrapper.find('h1.screen-reader-text')).not.exist;
    });

    it.only('should return H1 tag', () => {
      expect(dummyOutput.find('h1.screen-reader-text')).to.exist;
    });
  });
});

if (process.env.NODE_ENV === 'test') {
  specs();
}

export default specs;

【问题讨论】:

标签: reactjs enzyme testcase chai-enzyme


【解决方案1】:

当它在没有分配给任何东西的行上看到一个表达式时,它会警告你。例如,

1 + 1

会让它抱怨,因为它只是评估并且什么都不做,而 linter 认为这是无意的。它喜欢看到像

这样的作业
const x = 1 + 1 

在您的情况下,我认为它将该行解释为未用于任何内容的表达式,因为它看到最终您正在访问函数结果的属性的属性 (.to.exist ) 但你没有用这个值做任何事情(据它所知)。

如果您想让它停止抱怨,也许您可​​以尝试添加退货:

return expect(dummyOutput.find('h1.screen-reader-text')).to.exist;

【讨论】:

  • 如果有问题的表达式存在于 for 循环中怎么办?由于我们无法返回(这将结束迭代),我们如何解决这样的问题?
  • @ChumiestBucket 如果没有看到您的代码,很难说什么是最好的,Ben Hare 的这个链接(上图)可能有助于禁用此规则。 stackoverflow.com/a/37777342/8185858
  • 您也可以尝试添加变量赋值或使用map().every() 创建并检查结果值数组,但禁用规则可能更简洁、更容易。
猜你喜欢
  • 2020-03-21
  • 2011-05-09
  • 2017-09-09
  • 2015-11-03
  • 1970-01-01
  • 2020-11-16
  • 2020-12-28
  • 2019-04-22
相关资源
最近更新 更多