Articles of bdd

如何与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议也可以。)

使用Mocha&Should.js组织testing

我是使用Mocha&should.js进行unit testing的新手。 我正在使用Mocha的BDD来testing我的应用程序。 我正在testing的应用程序有不同的组件,如帐户,产品和订单。 在将代码移动到git仓库之前,我想testing应用程序的所有方面。 我对所有组件都有不同的testing文件。 例如,账户的account.js,订单的order.js等等。 我想testing一个临时testing帐户的所有组件。 所以stream程是: 创buildtesting帐户 testing与帐户相关的所有function(更新configuration文件,更改密码等) testing帐户产品的所有function testing账户订单的所有function 删除testing帐户及与其相关的所有信息 我的问题是如何确保在执行其他testing之前创build临时帐户? 因为我在不同的文件中testing用例,所以我如何确保它们的执行顺序与上面提到的相同? 还有其他更好的方法来testing应用程序吗? 谢谢。

如何存根要求()/期望调用模块的“根”function?

考虑下面的茉莉花规格: describe("something.act()", function() { it("calls some function of my module", function() { var mod = require('my_module'); spyOn(mod, "someFunction"); something.act(); expect(mod.someFunction).toHaveBeenCalled(); }); }); 这工作得很好。 像这样的东西使它变成绿色: something.act = function() { require('my_module').someFunction(); }; 现在看看这个: describe("something.act()", function() { it("calls the 'root' function of my module", function() { var mod = require('my_module'); spyOn(mod); // jasmine needs a property name // […]

如何运行与vows.js清理?

我使用Vows.js来testing一些在数据库中创buildlogging的node.js。 这样做会在数据库中创build一些testinglogging。 一旦testing运行,我想删除这些logging。 有一种方法可以在Vows中运行一批testing时运行清理函数吗?

需要外部js文件进行摩卡testing

所以我和我的express.js项目一起玩BDD和摩卡。 我刚刚开始,所以这是我作为我的第一个testing用例: should = require "should" require "../lib/models/skill.js" describe 'Skill', -> describe '#constructor()', -> it 'should return an instance of class skill', -> testSkill = new Skill "iOS", "4 years", 100 testSkill.constructor.name.should.equal 'Skill' (也这个coffeescript生成一些奇怪的js,因为它插入返回到最后的声明..这是正确的方式来设置一个testing与咖啡脚本?) 现在当我运行摩卡时,我得到这个错误: 1) Skill #constructor() should return an instance of class skill: ReferenceError: Skill is not defined 我认为这意味着skill.jsinput不正确。 我的技能类非常简单,只是一个构造函数: class Skill constructor: […]

摩卡失败断言造成超时

我正在开始使用NodeJS的摩卡testing框架。 成功断言工作正常,但如果断言失败,我的testing超时。 为了断言我已经尝试了应该和期望。 例如(asynchronous代码) it('should create new user', function(done){ userService.create(user).then(function(model){ expect(model.id).to.be(1); //created user ID done(); }, done) }); 在这里,如果模型id不是1,那么testing超时而不是报告失败的断言。 我确定我做错了什么。 感谢你的帮助。 谢谢!