5

我开始使用 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();
        });
    });
});

至于做这种非常规的测试编写,我没有比做这种测试更进一步(带有非常相似的测试用例列表的数组)

所以我想我的问题是

编写这样的测试是否可以,或者我应该将自己限制在更“静态类型”的测试夹具上?

4

1 回答 1

3

好问题!

是的,编写这样的单元测试非常好。甚至受到鼓励。

JavaScript 作为一种动态语言,可以让您真正轻松地模拟对象。DI 和 IoC真的很容易做到。一般来说,使用 Jasmine(或我个人更喜欢的 Mocha)进行测试是一种愉快而有趣的体验。

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

没有接口来定义你的契约,通常,你的测试定义了你的代码的契约,所以在 C# 中你不会看到测试做这种验证(比如在你的代码中)并不罕见。

于 2013-03-19T20:36:19.037 回答