bev*_*qua 5 javascript unit-testing node.js jasmine gruntjs
我开始使用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();
});
});
});
Run Code Online (Sandbox Code Playgroud)
至于做这种非传统的测试编写,我没有比做这种测试更进一步(带有非常相似的测试用例列表的数组)
所以我想我的问题是
编写这样的测试是否可以,或者我应该将自己约束到更"静态类型"的测试夹具?
好问题!
是的,像这样编写单元测试是完全可以的。甚至还受到鼓励。
JavaScript 是一种动态语言,可以让您非常轻松地模拟对象。DI 和 IoC确实很容易做到。一般来说,使用 Jasmine(或我个人更喜欢的 Mocha)进行测试是一种愉快而有趣的体验。
值得一提的是,由于您使用的是动态语言,因此您需要进行静态类型语言中没有的测试。测试通常会强制执行现有的成员和方法以及类型。
由于没有接口来定义契约,通常情况下,您的测试会定义代码的契约,因此,看到测试执行此类验证(如在代码中)的情况并不罕见,而在 C# 中则不会。
归档时间: |
|
查看次数: |
207 次 |
最近记录: |