Articles of 摩卡

使用摩卡与TDD接口,ReferenceError

我试图通过摩卡和柴进入unit testing。 我对Python内置的unit testing框架比较熟悉,所以我使用了Mocha的TD界面和chai的TDD风格的断言。 我遇到的问题是摩卡的tdd setupfunction。 它正在运行,但是我在其中声明的variables在testing中是undefined的。 这是我的代码: test.js var assert = require('chai').assert; suite('Testing unit testing === testception', function(){ setup(function(){ // setup function, yu no define variables? // these work if I move them into the individual tests, // but that is not what I want 🙁 var foo = 'bar'; }); suite('Chai tdd style […]

摩卡没有显示所有的testing

我有一些摩卡unit testing,当我运行这些只有2/3的testing显示。 我正在使用斑点记者,并通过运行我的testing。 这是我的makefile: REPORTER = list TESTS = test/*.js test/**/*.js test/**/**/*.js REQUIRE = should test: @NODE_ENV=test NODE_PATH=./app/controllers ./node_modules/.bin/mocha \ –reporter $(REPORTER) \ –ui tdd \ –require $(REQUIRE) \ -G \ $(TESTS) test-ci: @NODE_ENV=ci NODE_PATH=./app/controllers ./node_modules/.bin/mocha \ –reporter $(REPORTER) \ –ui tdd \ –require $(REQUIRE) \ $(TESTS) start: NODE_PATH=./app/controllers NODE_ENV=development nodemon server.js .PHONY: test 和test/test.js […]

如何避免深入嵌套在nodejstesting?

你会介意分享你的testingnodejs的最佳做法吗? 什么是你的经验,以避免深嵌套? 编写testing时,无法弄清楚如何重构这段代码来closures它。 describe('ProcessRawData', function(){ describe('event that has been already handled', function(){ beforeEach(function(done){ store.testMode(true); var filename = __dirname + '/data/test.txt'; fs.readFile(filename, 'utf8', function(err, rawData) { prd.process(rawData, function(err, data){ var rawMsgSha1 = '123464fbcb34c333f4300a88f019f43e7de757d6'; store.sismember('events:handled', rawMsgSha1, function(err, exists){ if (err) throw err; assert.ok(exists); done(); }); }); }); })

用mochatesting节点tcp服务器

我有一个我想用摩卡testing的tcp服务器: // Start the server require('net').createServer(function (socket) { // Handle incoming data socket.on('data', function (data) { … some stuff socket.write("reply with some err message if any"); }); }); 我通常使用expressjs为HTTP Rest API开发节点应用程序,并使用grunt-express-server模块,例如: grunt.registerTask('validate', [ 'express:dev', 'mochaTest', 'express:dev:stop' ]); 这个运行快速服务器,运行testing并停止快速服务器。 有没有相同的东西来testingTCP服务器?

使用超级testing时,将节点应用程序重置为已知状态

我经常使用supertest对我的节点应用程序写黑盒testing。 该应用程序加载数据库设备和黑盒testing运行数据库的努力。 我想重置某些testing之间的应用程序状态(所以我可以运行不同的testing组合,而不必担心特定的数据库状态)。 理想的事情是能够用另一个重新加载应用程序: var app = require(../app.js).app; 但是这只发生一次,当我运行摩卡(因为它应该与require调用)。 我想我可以通过在一个batch file的多个mocha调用中包装我的testing,但是我的开发人员习惯于运行npm test ,我希望他们继续这样做。 我怎么能这样做?

Supertest不返回结果,节点实例不退出

我只是在学习testing,我已经在这里几个小时没有成功。 每次我运行Mocha ,我的testing显示在terminal,并没有返回结果,如下所示: Express test app started on port: 3001 addition 之后它保持空白。 而且,节点进程在testing之后不会closures,当它们堆积起来时,会使我的计算机崩溃。 这是我的样本testing: var supertest = require('supertest'); var should = require('should'); process.env.NODE_ENV = 'test'; var app = require('../server'); describe('addition', function() { //… previous test it('should return 2 given the url /add/1/1', function(done) { request(app) .get('/add/1/1') .expect(200) .end(function(err, res) { should.not.exist(err); parseFloat(res.text).should.equal(2); done(); }); }); […]

testingexpress API需要本地服务器

我读过我可以在一个快速应用程序(nodeJS)与超级testing运行摩卡testing,因此它不需要在不同的terminal会话中运行应用程序。 无论我尝试它总是以连接错误结束。 为了configuration我们的持续集成,显然集成和unit testing(mocha,supertest,should)应该能够运行,而节点服务器也不运行 书面testing是validation我们的应用程序的内部API端点谁可以解释如何运行testing,而无需运行应用程序的快递服务器,以便他们可以与例如strider

咕噜+ mochaTest:更改工作目录?

我正尝试使用grunt-mocha-test来实现对我的nodejs-project 的testing,并且遇到了不同的/不正确的path问题。 就像我在别处看到的一样,我想通过只需要我的server.js来获得所有的依赖关系。 gruntfile.js mochaTest: { test: { options: { reporter: 'spec', require: 'app/server.js' }, src: ['app/test/**/*.js'] } } 我目前的项目结构看起来像这样 gruntfile.js app/server.js app/models/.. app/controllers/.. app/tests/.. users.controller.test.js var userCtl = require('../controllers/users.controller'); describe("return5", function () { it("should return 5", function () { var result = userCtl.return5(null, null); expect(result).toBe(5); }); }); users.controller.js var mongoose = require('mongoose'); var User […]

如何检查一个元素是否存在selenium nodejs

我想检查页面上是否存在元素(不应该),如果不存在则继续。 driver.wait(function() { fieldBool = driver.isElementPresent(webdriver.By.id("someId")); return fieldBool; }, timeout).then(function(b) { assert.equal(false, b, "message"); }); 我想fieldBool为false,但testing停止(超时或不存在这样的元素)。

我应该如何在摩卡unit testing中初始化一个Mongoose连接?

我一直在找这个地方。 有些人似乎这样做 mongoose.connect('mongodb://localhost/test'); 并继续他们的describe电话。 那asynchronous的等待呢? var db = mongoose.connection; db.on('error', console.error.bind(console, 'connection error:')); db.once('open', function (callback) { // yay! }); 我应该如何在摩卡testing中使用这个连接? 我应该把所有的testing在callback? 我应该等待连接代码在unit testing? 这个连接是否会持续describe ?