如果您查看the official Mocha page上的示例,您会发现他们使用以下describe
语法(针对其BDD模式):
describe('Array', function() {
describe('#indexOf()', function () {
但是,我似乎无法找到任何内容(在Mocha网站或其他地方),解释为什么第二个describe
应该是#indexOf()
而不是#indexOf
或只是{{ 1}}。 indexOf
似乎是一种非常常见的格式(我在OSS代码中已经看过它),但我以前从未见过有人添加括号。然后,摩卡人肯定比我更了解测试,所以我必须考虑他们使用这种语法是有原因的。
所以,我的问题是,任何人都可以指向我的资源:
#indexOf
的默认约定(我意识到这可能根本不是JS源,因为我知道很多这个东西起源于RSpec)如果你可以提供一个(或两者兼而有之),那就更好了。或者我也喜欢直接的答案(即不是资源的链接),如果它可以直接解释它。
基本上我只想了解这种语法的来源以及为什么我应该使用它(两者都是"因为聪明人____这么说"和"因为实际原因____"正在合法答案)。
答案 0 :(得分:1)
我没有关于此的权威来源。就摩卡而言,#indexOf()
并不特别。它会像处理任何其他文本一样对待它。
我遇到的唯一类似语法是JSDoc用于引用类的一部分的语法。 #name
语法用于指代在类的实例上使用的成员。在JSDoc 3语法中Array#indexOf
是一个有意义的表达式,它引用indexOf
实例上使用的Array
方法。请注意我怎么没有括号。我不记得在JSDoc 3中使用过括号。
[documentation](MyConstructor #instanceMember MyConstructor.staticMember MyConstructor~internalMember)给出了一个实例,静态和内部函数的例子:
/** @constructor */ Person = function() { this.say = function() { return "I'm an instance."; } function say() { return "I'm inner."; } } Person.say = function() { return "I'm static."; } var p = new Person(); p.say(); // I'm an instance. Person.say(); // I'm static. // there is no way to directly access the inner function from here
并展示了如何在JSDoc 3文档中引用它们:
Person#say // the instance method named "say." Person.say // the static method named "say." Person~say // the inner method named "say."
JSDoc 3重用了JSDoc 2的这种语法(对内部方法进行了一次修改),据我所知,它早于Mocha。