node.js 的 BDD 和 TDD?

Posted

技术标签:

【中文标题】node.js 的 BDD 和 TDD?【英文标题】:BDD and TDD for node.js? 【发布时间】:2011-06-10 00:18:30 【问题描述】:

node.js 的 BDD 和 TDD 使用什么?

我习惯使用 Cucumber + RSpec。 node.js 有什么好的组合?

谢谢

【问题讨论】:

【参考方案1】:

更新

Mocha 立即获得我的投票!


您可以从 node.js 模块页面查看testing modules section。例如Vows 是一个非常流行的 BDD 框架。

Vows 是一个行为驱动的 Node.js 开发框架。

【讨论】:

Mocha 的 bdd 接口非常接近 RSpec,但它仍然缺乏懒惰的 let/subject 细节。我为 mocha 创建了一个名为 lazy-bdd 的单独接口,其中包含以下添加:npmjs.com/package/mocha-lazy-bdd【参考方案2】:

查看mocha - (github)

还有 mocha-cakes,我在 mocha 上尝试 Cucumber 语法。

【讨论】:

为什么应该我用黄瓜语法和mocha现在【参考方案3】:

如果你习惯了 rspec,Jasmine 非常好。我没有在 Node.js 上使用它,但我用它来测试骨干应用程序。它的语法与 rspec 非常相似。取自上述网站:

describe("Jasmine", function() 
  it("makes testing javascript awesome!", function() 
    expect(yourCode).toBeLotsBetter();
  );
);

它在上面 Alfred 提供的链接中列出,但由于人们将 Vows 列为示例,我想我会给 Jasmine 一个改进,特别是因为它在语法上类似于 rspec ;)

【讨论】:

【参考方案4】:

Node http://vowsjs.org 上有 BDD 的“Vows”项目,看起来很不错。和 RSpec/Cucumber 有点不同,但是挺好玩的

【讨论】:

【参考方案5】:

也许稍晚一点,但你要找的是 Kyuri:https://github.com/nodejitsu/kyuri

“kyuri 是一个 node.js Cucumber 实现,带有一些额外的异步关键字。它支持 160 多种语言并导出到 VowsJS 存根”

另外,nodejitsu 似乎已经构建了一个 web 应用程序,用于以协作方式管理项目 Kyuri 功能规范,它被命名为“prenup”,我想看看。

【讨论】:

【参考方案6】:

你也可以试试yadda。它可以插入其他测试库,包括 mocha、jasmine、casper 和 webdriver,还可以让您编写适当的功能文件,而不仅仅是在原地注释您的测试。一个典型的测试可能看起来像......

var Yadda = require('yadda');
Yadda.plugins.mocha();

feature('./features/bottles.feature', function(feature) 

   var library = require('./bottles-library');
   var yadda = new Yadda.Yadda(library);

   scenarios(feature.scenarios, function(scenario, done) 
      yadda.yadda(scenario.steps, done);
   );
);

还有特征文件……

Feature: Mocha Asynchronous Example

Scenario: A bottle falls from the wall

Given 100 green bottles are standing on the wall
when 1 green bottle accidentally falls
then there are 99 green bottles standing on the wall

然后输出...

Mocha Asynchronous Example
✓ A bottle falls from the wall 

1 passing (12ms)

【讨论】:

【参考方案7】:

查看Buster.JS。由 Christian Johansen 创建,他的字面意思是 the book on javascript testing。

Buster 支持 TDD 和 BDD。它使用浏览器自动化进行浏览器测试(想想 JsTestDriver)、QUnit 风格的静态 html 页面测试、无头浏览器(PhantomJS、jsdom)中的测试等等。

【讨论】:

【参考方案8】:

包装一个 (bdd 和嘲笑) https://npmjs.org/package/a

非常紧凑的语法,上下文与行为分离,可链接的行为。 递归搜索的简单 Cmd 行运行器。

【讨论】:

【参考方案9】:

单元测试:Mocha 非常适合单元测试。

BDD 测试如果你想要 Node.js 的 BDD 测试框架,那么我推荐 Cucumber 包。

【讨论】:

【参考方案10】:

上个月我也遇到了同样的问题。

对于 BDD:

虽然 Mocha 本身通过其 describe 和 it 语句提供 BDD 风格。

对于像黄瓜这样的风格,你可以试试:

摩卡蛋糕 摩卡小黄瓜 黄瓜.js kyuri 摩卡黄瓜

他们都有自己的风格。很抱歉我现在不能提供工作的 sn-ps,让我知道@Donald 你选择了哪一个。想知道你的见解。

【讨论】:

【参考方案11】:

我也在寻找一个好的 Gherkin 实现,发现 mocha-cakes/mocha-cakes-2 很好,但功能不是很全。所以我以mocha为基础构建了我自己的,它与包括Scenario Outlines在内的小黄瓜语言相当。它还可以轻松引用测试中的数据。它与 cucumber.js 不同,因为它全部内联而不是单独的文件。您可以在这里找到该项目:

livedoc-mocha

【讨论】:

以上是关于node.js 的 BDD 和 TDD?的主要内容,如果未能解决你的问题,请参考以下文章

关于Node.js测试,你还想了解点啥?

Node.js BDD。黄瓜,小黄瓜还是黄瓜? [关闭]

饮食、睡眠和呼吸单元测试/TDD/BDD [关闭]

TDD和BDD

BDD TDD

TDD和BDD