javascript - Mocha 是否提供参数化测试“@Theory”样式的选项?
问题描述
JUnit 和 N/XUnit 都使我们能够对仅因输入值和预期结果不同的测试进行参数化。换句话说,我们可以静态定义测试数据集(输入 + 预期结果),并让单个测试执行并验证每个输入集的结果。我们可以在 JS 中使用至少两个实用程序来做同样的事情。
但是,对于 Java 和 .Net,我们可以更加概括测试,而不是测试特定值,我们可以使用理论(“@Theory”和“[Theory]”)描述生成输入数据和动态生成测试数据的规则分别)。
JS 中有什么实用程序可以在编写测试时实现这种抽象级别?
解决方案
我想做类似的事情,只是通过使用输入/输出参数创建一个数组并在循环中调用它来解决它。这只是一个基本的例子,但我可能会继续努力,看看我能做些什么。
describe('Arrow', () => {
const theories = [
[undefined, "left-arrow", "<"],
["left", "left-arrow", "<"],
["right", "right-arrow", ">"]
];
theories.forEach(([dir, className, arrow]) => {
it(`should render the correct arrow given ${dir} direction`, () => {
const wrapper = shallow(<Arrow dir={dir} onClick={jest.fn()} />);
expect(wrapper.hasClass(className)).toEqual(true);
expect(wrapper.text().toEqual(arrow);
});
});
推荐阅读
- flutter - Flutter 分析/构建在 GitHub 操作中失败
- openstreetmap - Overpass API:向上递归和过滤
- html - 由于 MIME 类型(“text/html”)与 pug 和 express 不匹配(X-Content-Type-Options: nosniff),来自 [...] 的资源被阻止
- jenkins - 共享声明性管道:重载调用运算符,同时保持对管道步骤的访问
- c# - 显示对象时播放特定声音
- firebase - 无法从 firebase 数据库映射数据数组
- mysql - 如何通过排除 SQL 中的行来添加数字
- ios - IOS自动更新订阅通知处理
- c# - 如何将 SQL 表列中的值放入 C# 中的数组中?
- google-sheets - 谷歌表单根据在第一个字段中选择的内容从电子表格中加载数据