javascript - 如何开玩笑地检查消极和积极的情况?
问题描述
我正在 Jest 中为 React 组件之一编写单元测试但是在这两种情况下,我都得到了错误的响应。
foo.js
:
import React from 'react';
function Foo({ data }) {
if (data === true) {
return (
<div className="hello" id="helloId">
Hello
</div>
);
} else {
return (
<div className="hi" id="hiId">
Hi
</div>
);
}
}
export { Foo };
foo.spec.js
:
describe('check foo Component', () => {
describe('without data', () => {
const mount = shallow(<Foo data={false} />);
it('data is false', () => {
expect(mount.contains('hello')).toBeNull();
});
});
describe('without data', () => {
const mount = shallow(<Foo data={true} />);
it('data is true', () => {
expect(mount.contains('hello')).toBeNull();
});
});
});
在这两个测试用例中,我都错了。它必须在一种情况下为真,在另一种情况下为假。在控制台中出现错误
仅用于在单个节点上运行。找到了 0 个。
如果未定义任何元素。
如何为这两种场景编写测试用例?
解决方案
这是单元测试解决方案:
foo.tsx
:
import React from 'react';
function Foo({ data }) {
if (data === true) {
return (
<div className="hello" id="helloId">
Hello
</div>
);
} else {
return (
<div className="hi" id="hiId">
Hi
</div>
);
}
}
export { Foo };
foo.test.tsx
:
import { Foo } from './foo';
import React from 'react';
import { shallow } from 'enzyme';
describe('check foo Component', () => {
it('data is false', () => {
const wrapper = shallow(<Foo data={false} />);
expect(wrapper.contains('Hi')).toBeTruthy();
});
it('data is true', () => {
const wrapper = shallow(<Foo data={true} />);
expect(wrapper.contains('Hello')).toBeTruthy();
});
});
带有覆盖率报告的单元测试结果:
PASS src/stackoverflow/50540892/foo.test.tsx
check foo Component
✓ data is false (10ms)
✓ data is true (1ms)
----------|----------|----------|----------|----------|-------------------|
File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s |
----------|----------|----------|----------|----------|-------------------|
All files | 100 | 100 | 100 | 100 | |
foo.tsx | 100 | 100 | 100 | 100 | |
----------|----------|----------|----------|----------|-------------------|
Test Suites: 1 passed, 1 total
Tests: 2 passed, 2 total
Snapshots: 0 total
Time: 4.253s, estimated 9s
源代码:https ://github.com/mrdulin/jest-codelab/tree/master/src/stackoverflow/50540892
推荐阅读
- ruby-on-rails - 重定向到 github omniauth 路由时如何解决 CORS 错误?
- django - 在远程机器(如 AWS 实例)上创建 .env 文件的正确方法是什么?
- php - 我使用 PHP 的 ZipArchive 创建的 .zip 存档在 Windows 10 上已损坏/无效
- c++ - 使用核心 OpenGL 版本
- wordpress - 无法对包含我的 wordpress 文件的 aws ec2 实例进行 ssh
- php - 在 Woocommerce 中添加税标签
- angular - 如何在角度中使用“this”关键字
- c# - 在asp.net中ListView的布局模板中查找控件
- javascript - 使用 vuejs 渲染视频对象
- angular - 如何使渲染器 setStyle 方法工作