unit testing的JavaScript代码风格

我开始使用JavaScript的unit testing(与茉莉花)。

我有unit testingC#代码的经验。 但是,鉴于JavaScript是一种dynamic语言,我发现它是非常有用的,并使用JavaScript的expression力量编写testing,例如:

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(); }); }); }); 

就做这种非常规的testing写作而言,我并没有做过这样的testing(testing用例列表非常类似)

所以我想我的问题是

编写这样的testing是好的,还是应该将自己限制在一个更“静态types”的testing夹具上?

好问题!

是的,编写像这样的unit testing是完全正确的。 它甚至被鼓励。

JavaScript是一种dynamic语言,可以让你轻松地模拟对象。 DI和IoC 真的很容易做到。 一般来说,用茉莉花(或我个人喜欢的摩卡)进行testing是一个愉快而有趣的体验。

值得一提的是,由于您使用的是dynamic语言,因此您需要进行testing,而不是使用静态types的语言。 testing通常会强制执行现有的成员和方法以及types。

没有接口来定义你的合同,通常, 你的testing定义了你的代码的合同,所以看到testing在你不使用C#的情况下进行这种validation(比如在你的代码中)并不罕见。