Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
单元测试javascript代码样式_Javascript_Node.js_Unit Testing_Jasmine_Gruntjs - Fatal编程技术网

单元测试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'

我将开始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真的很容易做到。 总的来说,用茉莉花(或者我个人更喜欢的摩卡咖啡)进行测试是一种愉快而有趣的体验

值得一提的是,因为您使用的是动态语言,所以需要进行静态类型语言中没有的测试。测试通常强制现有的成员和方法以及类型


由于没有接口来定义您的契约,通常,您的测试定义代码的契约,因此在C#中不常见的情况下,测试执行这种验证(如在代码中)

当然,我最想了解的是,这样表达测试用例是否会让人感觉混乱