我开始使用 javascript 单元测试(使用 Jasmine)。
我有单元测试 C# 代码的经验。但鉴于 javascript 是一种动态语言,我发现利用它并使用 javascript 的表达能力编写测试非常有用,例如:
describe('known plugins should be exported', function(){
var plugins = ['bundle','less','sass','coffee','jsn','minifyCSS','minifyJS','forward','fingerprint'];
plugins.forEach(function(plugin){
it('should export plugin named ' + plugin, function(){
expect(all[plugin]).toBeDefined();
});
});
});
就做这种非常规的测试编写而言,我没有比做这种测试更进一步(包含非常相似的测试用例列表的数组)
所以我想我的问题是
像这样编写测试是否合适,还是我应该限制自己使用更“静态类型”的测试夹具?
最佳答案
好问题!
是的,像这样编写单元测试是完全没问题的。它甚至受到鼓励。
JavaScript 是一种动态语言,让您可以非常轻松地模拟对象。 DI 和 IoC 真的很容易做到。 总的来说,使用 Jasmine(或我个人更喜欢的 Mocha)进行测试是一种愉快而有趣的体验。
值得一提的是,由于您使用的是动态语言,因此您需要进行静态类型语言中没有的测试。测试通常强制执行现有的成员和方法以及类型。
没有接口(interface)来定义你的契约,通常,你的测试定义了你的代码的契约,所以经常看到测试在你不会的地方进行这种验证(比如在你的代码中)在 C# 中。
关于javascript - 单元测试javascript代码风格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15509851/