如果您查看Mocha官方页面上的示例,您会发现它们使用以下describe
语法(用于BDD模式):
describe('Array', function() {
describe('#indexOf()', function () {
然而,我似乎找不到任何东西(在Mocha网站或其他地方)来解释为什么第二个describe
应该是#indexOf()
而不是#indexOf
或只是indexOf
。#indexOf
似乎是一种非常常见的格式(我在OSS代码中看到过),但我以前从未见过有人添加括号。再说一遍,Mocha人肯定比我更了解测试,所以我想他们使用这种语法是有原因的。
所以,我的问题是,有人能给我指一个资源吗:
- 是一个"真相的来源"(例如Mocha网站上的某个地方,或某个主要测试网站上),说____是
describe
的默认约定(我意识到这可能根本不是JS源,因为我知道很多东西都源于RSpec) - 描述了采用此语法的实际好处
如果你能提供其中一种(或者同时提供两种),那就更好了。或者,如果可以直接解释的话,我也希望有一个直接的答案(即不是到资源的链接)。
基本上,我只想了解这个语法是从哪里来的,以及为什么我应该使用它("因为聪明人____这么说"one_answers"因为实际原因____"都是合法的答案)。
我没有关于这方面的权威来源。就Mocha而言,#indexOf()
并不特别。它对待它就像对待任何其他文本一样。
我遇到过的唯一类似的语法是JSDoc引用类部分的语法。#name
语法用于引用类实例上使用的成员。在JSDoc 3语法中,Array#indexOf
是一个有意义的表达式,它引用了Array
实例上使用的indexOf
方法。请注意,我没有括号。我不记得在JSDoc 3中使用过括号。
[文档](MyConstructor#instanceMemberMyConstructor.staticMemberMyConstructor~innerMember)给出了实例、静态和内部函数的示例:
/** @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。