【问题标题】:Unit testing javascript code style单元测试 javascript 代码风格
【发布时间】:2013-03-08 17:44:08
【问题描述】:

我开始使用 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 node.js unit-testing jasmine gruntjs


    【解决方案1】:

    好问题!

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

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

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

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

    【讨论】:

    • 当然,我主要想知道表达这样的测试用例是否感觉很混乱
    猜你喜欢
    • 1970-01-01
    • 2011-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-31
    • 1970-01-01
    • 2014-03-23
    • 2013-04-16
    相关资源
    最近更新 更多