在Mocha中描述()是什么

我正在试着用摩卡弄脏我的双手,这里是我从文档中看到的例子:

var assert = require("assert") describe('Array', function(){ describe('#indexOf()', function(){ it('should return -1 when the value is not present', function(){ assert.equal(-1, [1,2,3].indexOf(5)); assert.equal(-1, [1,2,3].indexOf(0)); }) }) }) 

大多数例子显示了第二个描述语句

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

#indexOf() #开始。 这个#的意义是什么? 为什么这不能简单地写成indexOf ? 我在哪里可以得到对描述如何工作的基本理解?

PS:我查看了http://visionmedia.github.io/mocha/#interfaces的文档,但无法弄清楚这些是如何进入画面的,以及这些接口是如何处理的。

谢谢

mocha的bdd语法是ruby RSpec的一个灵感,因此您可以findmocha寻找RSpec的惯例的最佳技巧,下面是一个很好的开始:

http://betterspecs.org/

特别是在那里提到#

例如,使用Ruby的文档约定。 (或:):当引用一个类方法的名字时,#引用一个实例方法的名字。

看看摩卡的源代码,我没有看到它做了什么重要的#出现在describe的第一个参数。

这就是说 ,在JavaScript的某些文档系统(例如jsdoc )中,使用#表示以下内容属于对象实例,而不属于对象的类。 所以Foo#bar会是这样的:

 var foo = new Foo(); foo.bar(...); 

不是这样的:

 Foo.bar(...) 

后者将被表示为Foo.bar 。 因此,在testing套件中使用相同types的符号来区分被testing的方法是属于实例还是类是合理的。

从#indexOf()中的#开始。 这个#的意义是什么?

没有。 有人认为它看起来更好。

我在哪里可以得到对描述如何工作的基本理解?

这基本上是将testing分组在一起并before一组testingbefore / after运行的一种方法。

你会知道什么时候需要它,如果你问这个问题,你可以放心地忽略所有的describe ,并在没有它们的情况下写testing。