Articles of bdd

Node.js和coffeescript – testing与摩卡和僵尸的应用程序

我试图testing一个node.js webapp我已经开始与摩卡和僵尸工作。 但是还有一些事情我还是不明白,希望得到一些帮助。 请注意,我正在使用快递 假设我正在testing用户authentication。 显然有两个部分:1 – 用户界面2 – 行为,涉及控制器和模型所以,我决定分开这两个部分。 对于用户界面,我决定使用僵尸。 以下链接包含我为用户authentication编写的UItesting: https : //gist.github.com/7e45d6884ce2d32e933d基本上,我的用户authentication表单包含用户名和密码input字段以及loginbutton。 我对四种情况感兴趣:至less有一个input字段是空的,而且两个都是由用户提供的。 虽然现在四次testing都通过了,但是我仍然不相信他们是正确的testing,或者是否足够或者做了正确的事情。 你们(BDD专家)认为什么? 谢谢José

MakeFile使用NPM运行Mochatesting

我正在尝试创build一个MakeFile来运行与NPM的摩卡unit testing。 所以我安装了摩卡,并在下面创build了一个unit testing: {} project_root /test/test.js 现在,当我尝试“做testing”与答复: make:“testing”没有什么可做的。 这是我的MakeFile: test: @./node_modules/.bin/mocha -u tdd .PHONY: test 所以真正的基本。 我读过摩卡将自动运行“testing”目录中的所有testing。 我的MakeFile语法不正确吗? 谢谢!

在Node.js中进行DRYtesting

我已经写了一个Node.js CLI,并希望进一步的开发以TDD风格进行。 我有一个理想的工作stream程,想知道现有的框架是否可行。 当我编写一个新的函数时,我想在一个断言中logging它的前提条件,如果input没有被validation,将会抛出一个错误。 后置条件应在function中或附近指定 前置条件和后置条件应该生成用npm test运行的npm test 断言只能在开发模式下检查 每个函数中的文档都应该为CLI生成(html | md)文档 如果我想添加除前置条件/​​后置条件/不变testing之外的testing,应该很容易 当嘲笑testing时,应该有一种方法来指定“之前的宇宙”和“之后的宇宙”。 例如,为了testing支持新项目的命令,我应该能够将初始目录结构指定为空({}),并将最终目录结构指定为表示结果的JSON对象({name:“project “,path:”/项目“,types:”目录“,儿童:{…}})< – 或类似的东西。 这似乎需要拦截写入文件系统的能力。 我还没有自动化testing生成的候选库。 我认为Mocha , rewire和Contractual / Obligations可能适用于其他任何事情,但是我有兴趣了解其他方法。

当摩卡testing失败时,它将一个对象logging到控制台

当我所有的testing通过,一切都按预期工作。 然而,当一个testing失败并且任何记者处于活跃状态时,赛跑者都会打印出一个代表追踪痕迹的对象,而不是我在屏幕截图中看到的格式不正确的错误消息 > mocha –reporter spec –ui bdd –ignore-leaks Site Routes GET /sites ✓ should return a 200 OK ✓ should be a JSON response ◦ should be an array: { "date": "Fri Apr 19 2013 16:09:20 GMT-0400 (EDT)", "process": { "pid": 34270, "uid": 1032026306, "gid": 116266774, "cwd": "/Users/squinn/Projects/armada", "execPath": "/usr/local/Cellar/node/0.10.4/bin/node", "version": "v0.10.4", "argv": [ […]

BDDtestingREST / JSON-RPC API

我使用一个混合了REST和JSON-RPC后端API的项目来开发移动应用程序。 应用程序服务器构build在node.js(express,cluster,pm2)+ redis(ioredis)+ mysql(node-mysql)+ rabbitmq(amqp)上。 现在我们面临着一个沉重的重构,但没有testing! 毫无疑问,这是一个巨大的麻烦:( 一开始,我们计划用BDDtesting来覆盖它。 这听起来很容易,但是有一个障碍,就是在testing开始之前准备好环境。 例如,一些testing会改变存储中的数据,我们必须每次都重新加载数据库转储。 坦率地说,这是非常不方便的。 而且,保持实际(最新)状态并不容易,例如当我更改代码时,我也必须更改转储。 所以,我对可用于准备数据存储状态(内容)(MySQL和Redis)的方式/工具/范例感兴趣。 提前感谢您的任何build议。

如何与jasmine-node一起使用jsdom.jQueryify?

用jasmine的jQueryifyfunction可以使用jasmine-node吗? 我想要做的就是使用NodeJS来testing一些依赖于DOM存在的JavaScript。 这是我尝试的一个减less的情况。 当我运行这个脚本时,jasmine-node识别这个规范,但是不运行expect() : var fs = require('fs'), jsdom = require('jsdom'), window = jsdom.createWindow(), jasmine = require('jasmine-node') describe("jQueryify", function() { it('should run the test!', function () { jsdom.jQueryify(window, function (window, jquery) { expect(1).toEqual(1) }) }) }) 或者,是否有不同的/更好的方式来testingNodeJS中的假设类似浏览器的环境?

在Vows.js中,如何在经历asynchronouscallback之后恢复原始主题?

说我有以下顺序: vows.describe('Example').addBatch({ 'An example' : { topic: new Example(), 'with an async method' : function(example) { example.asyncMethod(this.callback); }, 'will do some magic' : function(err, result) { assert.equal(result.magical, true); }, 'and then we will be back on track' : function(example) { assert.isTrue(example.backOnTrack); } } }).run(); 是testing“ and then we will be back on track ”可能击中前面的话题( Example […]

如何使用Mocha,GrunttestingNodeJS应用程序?

也许有人遇到过关于“如何使用mocha,gruntjstestingnodejs应用程序”的npm module / tutorial / guide / article? 会很高兴有任何build议。

摩卡js断言悬挂使用诺言?

"use strict"; let assert = require("assert"); describe("Promise test", function() { it('should pass', function(done) { var a = {}; var b = {}; a.key = 124; b.key = 567; let p = new Promise(function(resolve, reject) { setTimeout(function() { resolve(); }, 100) }); p.then(function success() { console.log("success—->", a, b); assert.deepEqual(a, b, "response doesnot match"); done(); }, function […]

从来没有写过任何自动化testing,我应该如何开始行为驱动开发?

我已经用很多语言进行了多年的编程,并且喜欢认为我一般都很擅长。 但是,我从来没有写过任何自动化testing:没有unit testing,没有TDD,没有BDD,什么都没有。 我试图开始为我的项目编写适当的testing套件。 我可以看到在进行任何更改后能够自动testing项目中的所有代码的理论价值。 我可以看到像RSpec和Mocha这样的testing框架应该如何设置和运行所述testing非常简单,我喜欢他们提供的用于编写testing的DSL。 但我从来没有设法为我的代码的任何部分写一个实际的unit testing。 我写的东西似乎从来没有以一种实际有用的方式进行testing。 函数在使用它们的上下文之外似乎不是很可调用的。 我写的许多函数都会进行HTTP请求调用或数据库查询,或者其他一些不易testing的调用。 一些函数返回HTML的string。 我可以将HTMLstring与相同string的硬编码版本进行比较,但似乎只能限制我更改代码部分的能力。 另外在我的testing代码中加载HTML是一团糟。 我可以传递模拟/间谍对象到一个方法,并确保他们得到某些方法调用,但据我所知,只是testing我正在“testing”的方法的实现细节。 我将如何开始正确的BDDtesting? (我最好喜欢用Mocha和Node.js来做这个,但是关于BDD的一般build议也可以。)