【发布时间】:2016-09-11 13:19:19
【问题描述】:
故事:
我们有一个相当大的测试代码库,其中包含 Protractor+Jasmine 测试。
我们目前遇到的一个问题是,一些测试/规范文件包含多个描述,这会不时引起麻烦 - 例如,在逐个调试测试时(或批量)我们使用fdescribe/fit;有时我们不会注意到底部同一文件中还有其他decribes,最终导致部分测试被无意跳过。
换句话说,这是一种“每个测试一个断言”类型的规则的变体,有助于保持测试代码库的干净和“平坦”。
问题:
有没有办法禁止每个文件有多个describe?我目前正在考虑通过静态代码分析和ESLint 来解决它,但我也对其他解决方案持开放态度。
样本:
违规示例:
describe("Test 1", function () {
it("should do something", function () {
expect(true).toBe(true);
});
});
describe("Test 2", function () {
it("should do something else", function () {
expect(false).toBe(false);
});
});
如果有单个 describe 块,但它包含嵌套的 describes,则不应将其报告为违规。换句话说,这是可以的:
describe("Test 1", function () {
it("should do something", function () {
expect(true).toBe(true);
});
describe("Test 2", function () {
it("should do something else", function () {
expect(false).toBe(false);
});
});
});
【问题讨论】:
-
嵌套描述块怎么样?
-
@jonrsharpe 好问题。只应考虑顶级描述。用一些示例更新了问题。谢谢!
-
静态分析是要走的路。您应该将规则贡献给 github.com/lo1tuma/eslint-plugin-mocha 。这样任何有兴趣的人也可以使用它。
标签: javascript jasmine protractor eslint static-code-analysis