单元测试javascript代码样式
我将开始javascript单元测试(使用Jasmine) 我有单元测试C#代码的经验。但是考虑到javascript是一种动态语言,我发现利用它并使用javascript的表达能力编写测试非常有用,例如:单元测试javascript代码样式,javascript,node.js,unit-testing,jasmine,gruntjs,Javascript,Node.js,Unit Testing,Jasmine,Gruntjs,我将开始javascript单元测试(使用Jasmine) 我有单元测试C#代码的经验。但是考虑到javascript是一种动态语言,我发现利用它并使用javascript的表达能力编写测试非常有用,例如: describe('known plugins should be exported', function(){ var plugins = ['bundle','less','sass','coffee','jsn','minifyCSS','minifyJS','forward'
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真的很容易做到。
总的来说,用茉莉花(或者我个人更喜欢的摩卡咖啡)进行测试是一种愉快而有趣的体验
值得一提的是,因为您使用的是动态语言,所以需要进行静态类型语言中没有的测试。测试通常强制现有的成员和方法以及类型
由于没有接口来定义您的契约,通常,您的测试定义代码的契约,因此在C#中不常见的情况下,测试执行这种验证(如在代码中) 当然,我最想了解的是,这样表达测试用例是否会让人感觉混乱