Tag: 摩卡

如何避免深入嵌套在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 ?

通过JSDom的JQuery不是一个赋予TypeError的函子

IO.js 1.3.0在Windows上使用带有Mocha 2.0.1的JSDOM 4.0.1和jQuery 2.1.1 以下代码: var chai = require('chai'); var jsdom = require('jsdom'); describe('JSDOM', function () { var $; beforeEach(function () { global.document = jsdom.jsdom('<html><body><section id="banner"></section></body></html>'); global.window = global.document.defaultView; global.navigator = global.window.navigator; $ = global.jQuery = require('jquery')(global.window); }) it('Using jquery', function () { var dom = $("#banner"); }); }); 当使用JQueryselect器作为函子时(例如$(…)), TypeError:object的错误不是函数 。 任何人遇到这个,并有一个解决方法?

摩卡挂钩前后不执行

我想在我的本地cassandra数据库上运行一个简单的testing来检查select语句是否从表中返回正确的logging数。 但是,放在前后块之间的代码并没有被调用。 结果我的testing简直失败了。 var assert = require('assert'); var cassandra = require('cassandra-driver'); var async = require('async'); //Connect to the cassandra cluster, assuming that the keyspace & columnspace already exists var client = new cassandra.Client({contactPoints: ['127.0.0.1'], keyspace: 'demo'}); describe('Cassandra is up and running', function() { before(function() { //Check if the connection got established successfuly client.connect(function(err) { if(err){ […]