ale*_*cxe 14 javascript testing end-to-end jasmine protractor
问题:
最近,在查看我们现有的测试代码库时,我注意到在expect()没有"匹配"部分时使用了一种危险的拼写错误/错误:
expect(page.filters.fromDateLabel.getText(), "After");
Run Code Online (Sandbox Code Playgroud)
我很确定toEqual()这里有用的意思:
expect(page.filters.fromDateLabel.getText()).toEqual("After");
Run Code Online (Sandbox Code Playgroud)
这个问题是jasmine在这种情况下不会失败的预期(很明显,因为实际上并没有预料到).这让我们遇到了一个更严重的问题 - 在测试案例中没有实际测试过 - 它没有任何期望.我们对测试的内容产生了错误的认识.
问题:
我想尽快抓住这些错误.您认为我应该如何处理这个问题?
思考:
jasmine有这样的内置),它会以某种方式使测试用例失败expect()如果"期望"部分没有调用任何内容,则"修补" 并发出警告/引发错误eslint规则答案中提供的自定义ESLint规则现在是eslint-plugin-jasmine1.6.0 的一部分:
旧答案:
这是我最终得到的自定义ESLint规则:
module.exports = function (context) {
return {
// checking "expect()" arguments
CallExpression: function (node) {
if (node.callee.name === 'expect') {
if (node.arguments.length > 1) {
context.report(node, 'More than one argument passed to expect()')
} else if (node.arguments.length === 0) {
context.report(node, 'No arguments passed to expect()')
}
}
},
// nothing called on "expect()"
'CallExpression:exit': function (node) {
if (node.callee.name === 'expect' && node.parent.type === 'ExpressionStatement') {
context.report(node, 'Nothing called on expect()')
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
它检查3件事:
expect()expect()expect()以下是expect()目前捕获的无效用法示例:
expect(page.filters.fromDateLabel.getText(), "After");
expect("After");
expect();
Run Code Online (Sandbox Code Playgroud)
对于选项#1,实际上ESLint已经实现了一个非常相关且有用的规则,并且由[ eslint-plugin-jasmine] 开源:
| 归档时间: |
|
| 查看次数: |
778 次 |
| 最近记录: |