Tag: 摩卡

在chaijs做unit testing有关expect.throw的问题

我正在使用chaocha和mochajs进行unit testing。 这是chaijs的文件。 http://chaijs.com/api/bdd/ 根据文档,它可以检查函数是否抛出exception。 所以,用这个代码: var expect = require("chai").expect; describe("Testing", function(){ var fn = function(){ throw new Error("hello"); }; //map testing describe("map", function(){ it("should return error",function(){ expect(fn()).to.not.throw("hello"); }); }); }); testing应该说“通过”? 它期待一个错误,函数fn正在给它。 但是我得到这个: 11 passing (37ms) 1 failing 1) Testing map should return error: Error: hello at fn (/vagrant/projects/AD/tests/shared/functionalTest.js:13:29) at Context.<anonymous> (/vagrant/projects/AD/tests/shared/functionalTest.js:17:11) at Test.Runnable.run […]

Nodejs – 使用MochatestingAWS

我在为使用AWS和graphicsmagick的以下nodejs代码编写testing时遇到了麻烦。 我试图search如何编写async的waterfall方法testing的例子,但没有任何明确的结果。 // dependencies var async = require('async'); var AWS = require('aws-sdk'); var gm = require('gm').subClass({ imageMagick: true }); var util = require('util'); // get reference to S3 client var s3 = new AWS.S3(); exports.AwsHandler = function(event, context) { // Read options from the event. console.log("Reading options from event:\n", util.inspect(event, {depth: 5})); var srcBucket = […]

如何在特定的testing上运行摩卡上的“后”代码?

编辑:这个问题被回答,但我有另一个类似的问题,我不想打开一个新的线程。 我正在使用摩卡和柴来testing我的项目。 作为我的代码的一部分,我创build一个新的用户,并将其保存在我们的数据库(所以testing用户可以在我们的应用程序执行各种方法)。 一般来说,每次testing后,我想运行一个代码块,从DB中删除用户,我使用“AfterEach”挂钩。 我的问题是,我有1testing(可能会在未来更多),这不会创build一个用户(例如,'尝试login而无需注册'),所以我的AfterEach代码收到错误(不能删除的东西不存在)。 摩卡是否提供了在某些testing中禁用“AfterEach”的方法? 或者一些其他解决scheme,我的问题。 编辑:添加的问题:我的AfterEach挂钩涉及一个asynchronous方法,它返回一个承诺。 在摩卡文档中,我只看到了一个与callback一起工作的asynchronous钩子的例子。 我应该如何使用返回promise的afterEach钩子

用Mocha和ChaitestingExpress和护照OAuth2

我有一个使用Express和Passport的应用程序。 我正在使用Passport的Google OAuth2策略。 我有几条路线需要通过这个策略login。 目前我正在使用Mocha和Chai进行集成testing,但是我不确定如何绕过或使用某些路由所需的OAuth2身份validation。 例如,这是我的一个testing: it("should list a single item on /items/<id> GET", function(done) { chai.request(server) .get('/items/' + id) .end(function(err, res) { res.should.have.status(200); res.should.be.json; res.body.should.be.a('object'); res.body.should.have.property('description'); done(); }); }); 我的路线为/items/:id router.get('/items/:id', auth.isLoggedIn, function(req, res) { var item = getItem(); res.json(item); }); /items/:id需要login。 有没有办法绕过logintesting,或嘲笑一个用户,我的集成testing将工作?

sinon存根不替代function

我正在尝试使用sinon stubreplace可能需要时间的函数。 但是当我运行testing时,testing代码似乎没有使用sinon stub。 这是我试图testing的代码。 function takeTooLong() { return returnSomething(); } function returnSomething() { return new Promise((resolve) => { setTimeout(() => { resolve('ok') }, 1500) }) } module.exports = { takeTooLong, returnSomething } 这是testing代码。 const chai = require('chai') chai.use(require('chai-string')) chai.use(require('chai-as-promised')) const expect = chai.expect chai.should() const db = require('./database') const sinon = require('sinon') require('sinon-as-promised') describe('Mock […]

Node.js – 简单的Restify POST摩卡testing失败

我有一个简单的Node.jsrest服务器使用Restify单个POST服务。 我正在尝试编写一个简单的Mochatesting,但是它会失败并且超时,尽pipeREST控制台testing(浏览器插件)成功。 我的服务器代码: /** * Module dependencies */ var restify = require('restify'); var events = require('events'); var util = require('util'); /** * Create App */ var server = restify.createServer({ name: 'test', version: '0.0.1' }); var eventsEmitter = new events.EventEmitter(); /** * Configuraion */ server.use(restify.acceptParser(server.acceptable)); server.use(restify.queryParser()); server.use(restify.bodyParser()); /** * Routes */ server.post('/post', function (req, res, next) […]

节点上的Mocha中的XMLHttprequest

我正在尝试使用node-xmlhttprequest 。 所以如果我这样做 // f.js (function() XMLHttpRequest = require('xmlhttprequest').XMLHttpRequest xhr = new XMLHttpRequest() xhr.open('GET', "http://url-bla-bla.json", true) xhr.onreadystatechange = function(){ console.log("xhr "+JSON.stringify(xhr)) } xhr.send() )() 并将其称为node f (假设Access-Control-Allow-Origin不是http://url-bla-bla.json链接的问题 – 它起作用 但如果我尝试它包装同样的东西到摩卡规格 describe('foo',function(){ it('xhr test',function(){ XMLHttpRequest = require('xmlhttprequest').XMLHttpRequest xhr = new XMLHttpRequest() xhr.open('GET', "http://url-bla-bla.json", true) xhr.onreadystatechange = function(){ console.log("xhr "+JSON.stringify(xhr)) } xhr.send() } } 并与mocha f运行(我甚至不必包装在摩卡规格) 它将无法正常工作并且失败,并且readyState […]

摩卡,快速testing错误 – “毕竟”钩错误 – 对象函数没有方法“closures”

我刚刚开始使用摩卡,testing一个非常基本的Express 4.0 rest API。 describe('API CALL UNIT TESTING', function(){ var app = require('../../app'); before(function(){ app.listen(3000); }); describe('GET', function(){ it('respond with json', function(done){ request(app) .get('/api/compile') .set('Accept', 'application/json') .expect('Content-Type', 'application/json') .expect(200, done) .end(function(e, res){ //console.log(res) done(); }) }) }); after(function() { app.close(); }); }); 运行testing时,我得到以下错误: 1通过(48ms)1失败 1)API CALL UNIT TESTING“毕竟”挂钩:TypeError:对象函数(req,res,next){app.handle(req,res,next); }没有方法“closures” 任何人都可以build议是什么导致“毕竟”钩错误?

节点摩卡柴asynchronous – 一切都传递,即使它应该失败

我试图教自己使用一个testing框架来自动化testing,而不是手动完成。 经过一些试验和错误,我终于得到了unit testing开始传递…但现在,我的问题是一切都传递,不pipe是否应该。 目前我有以下代码: describe('create {authName, authPW}', function() { it('no name', function() { init({ path: ':memory:', callback: function() { var arg; arg = {}; //arg['authName'] = 'Name'; arg['authPW'] = 'Pass'; arg['callback'] = function(r) { // r.should.equal('create error'); r.should.equal('foobar'); done(); }; create(arg); } }); }); }); 正如你所猜测的那样… r不应该等于'foobar' 我在这里做错了什么?

Sails.js:哪些模块用于unit testing?

我是sails.js和node.js的新手 我试图弄清楚设置unit testing的最佳方法是什么。 例如,在Kraken.js中,生成时已经有一个testing/文件夹设置,它看起来像使用摩卡。 但是,没有像这样预先包装sails.js。 我想知道什么是最好的方式来构build它,我需要添加依赖关系(我应该使用业力,茉莉花,摩卡,量angular器,…),以及如何自动化一切(即运行所有testing使用“grunttesting”我想,或者我应该在每个“npm start”运行testing…?) 你如何在你的sails.js环境中设置unit testing?