【问题标题】:How to check for exactly 1 occurence of a string with unit test?如何通过单元测试检查字符串是否出现 1 次?
【发布时间】:2017-05-26 03:55:13
【问题描述】:

我正在使用酶和 chai 为我的 reactjs-app 创建一个单元测试:

const wrapper = shallow(
    <MyComp {...props}>
    </MyComp>
);

expect(wrapper.debug()).to.contain("hello");

我怎样才能断言单词“hello”恰好出现 1 次?

【问题讨论】:

  • 我相信我们可以跳过 chai 的 contain 并做类似 expect((wrapper.debug().match(/hello/g) || []).length).to.equal(1) 的事情以获得灵活性。

标签: javascript unit-testing reactjs chai enzyme


【解决方案1】:

我建议测试你的组件的完整渲染:

// GIVEN
const expectedElement = shallow(<div>Hello</div>);

// WHEN
const actualElement = shallow(<MyComp {...props} />);

// THEN
expect(actualElement.html()).to.equal(expectedElement.html());

它为您提供比contains 方法更好的覆盖范围。但有时您需要使用正则表达式来清除 React 空 HTML 模板或生成的 CSS 类(如果您或您的第三方组件正在使用它们)。

如果您使用 Jest,还有一个库/插件可以预生成预期元素,您可以将其签入源代码控制。每次测试运行时,实际渲染都会与此预渲染组件进行比较。但我自己并没有使用这种方法。

【讨论】:

    猜你喜欢
    • 2010-10-05
    • 1970-01-01
    • 2011-10-31
    • 2015-05-31
    • 2021-02-15
    • 2016-06-16
    • 1970-01-01
    • 2015-06-04
    相关资源
    最近更新 更多