javascript - 如何通过单元测试检查字符串是否恰好出现 1 次?

标签 javascript unit-testing reactjs chai enzyme

我正在使用 enzyme 和chai为我的reactjs应用程序创建一个单元测试:

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

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

如何断言单词“hello”恰好出现 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,还有库/插件可以预先生成预期元素,您可以将其 checkin 源代码管理。每次测试运行时,实际渲染都会与此预渲染组件进行比较。但我自己并没有使用这种方法。

关于javascript - 如何通过单元测试检查字符串是否恰好出现 1 次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44193317/

相关文章:

javascript - Ant-Design 表单验证在使用 onChange 时返回旧值

javascript - 用于多选的引导选择器 - 选择所有选项

java - 用 mockito 模拟一个静态方法

jquery - 独立 Jasmine 与 karma - Jasmine

java - 使用 Mockito.doAnswer(...) 重复回答处理

reactjs - React-native,清除 webview cookie?

javascript - 这是在 Node.js 中编写异步代码的正确方法吗?

javascript - 如何通过构造函数异步调用注入(inject)服务,Angular 2

c# - Asp.net将类库中的js编译为嵌入资源,其中包含c#代码

android - 无法在额外属性扩展上获取属性 'ndkVersion',因为它不存在于... react-native 0.64.0