Mocha (BDD) Describe 是否有标准语法?如果有,其背后的逻辑是什么?

Is There a Standard Syntax for Mocha's (BDD) Describe, and if so What is the Logic Behind It?

如果您查看 the official Mocha page 上的示例,您会发现它们使用以下 describe 语法(针对其 BDD 模式):

describe('Array', function() {
    describe('#indexOf()', function () {

但是,我似乎找不到任何东西(在 Mocha 网站或其他地方)解释为什么第二个 describe 应该是 #indexOf() 而不是 #indexOf 或者只是 indexOf#indexOf 貌似是很常见的格式(我在OSS代码里看到过),但是没见过有人加括号的。话又说回来,Mocha 的人肯定比我更了解测试,所以我必须弄清楚他们使用这种语法是有原因的。

所以,我的问题是,任何人都可以指出我的资源:

如果您能提供其中一种(或两种都提供),那就更好了。或者我也喜欢直接回答(即不是 link 资源),如果可以直接解释的话。

基本上我只是想了解这种语法的来源以及我为什么要使用它("because smart person ____ said so" 和 "because of practical reason ____" 都是合法的答案)。

我没有这方面的权威消息来源。就摩卡而言,#indexOf() 并不特别。它像对待任何其他文本一样对待它。

我遇到过的唯一类似的语法是 JSDoc 的引用部分 class 的语法。 #name 语法用于引用在 class 的实例上使用的成员。在 JSDoc 3 语法中,Array#indexOf 是一个有意义的表达式,它指的是在 Array 实例上使用的 indexOf 方法。请注意我没有括号。我不记得曾经在 JSDoc 3 中使用过括号。

[文档](MyConstructor#instanceMember MyConstructor.staticMember MyConstructor~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。