Articles of 摩卡

模拟一个HEAD请求redirect(通过nock模块)

在我的项目中,我尝试扩展推文以充分显示。 由bit.ly缩短的链接被这个和平的代码扩展(find@ stackoverflow)。 function expandUrl(shortUrl,callback) { debug("expandUrl"); request( { method: "HEAD", url: shortUrl, followAllRedirects: true }, function (error, response) { if (error) return callback(null,shortUrl); return callback(null,response.request.href); } ); } 在摩卡testing期间不需要在线,我想用下面的代码来禁止这部分代码: nock('http://bit.ly') .intercept("/1Ghc7dI","HEAD") .reply(200,undefined,{location:"http://discoverspatial.com/courses/qgis-for-beginners"}); 但是这不起作用。 这个工作后,response.request.href是“undefined”。 (我试过href而不是位置,这没有什么区别。

全局模式包括所有的js排除特定的结局

我想用摩卡水珠。 可悲的摩卡不支持排除,也不会传递glob选项,所以我必须在不使用glob ignore选项的情况下以单一模式解决这个问题。 https://github.com/mochajs/mocha/issues/1577另一个解决scheme是使用mocha.opts,但这不是业力兼容,我不知道为什么。 我可以定义一个karma兼容的opts文件和一个兼容节点的opts文件,但是这个会在问题解决后立即中断,所以我正在寻找另一个解决scheme。 https://github.com/karma-runner/karma-mocha/issues/88 我需要匹配test/**/*.spec.js并从结果中排除test/**/*.karma.spec.js 。 这是可能的一个单一的glob模式?

aws-sdk s3上传不工作从摩卡testing

尝试从摩卡testing运行s3上传: 'use strict'; describe('S3 test', function() { it.only('S3 test 1', function*() { var AWS = require('aws-sdk'); //AWS.config.region = 'us-west-2'; var s3 = new AWS.S3({ params: { Bucket: 'test-1-myBucket', Key: 'myKey' } }); s3.createBucket(function(err) { if (err) { console.log("Error:", err); } else { s3.upload({ Body: 'Hello!' }, function() { console.log("Successfully uploaded data to myBucket/myKey"); }); } […]

补丁/模拟函数内的另一个函数在JavaScript中进行testing

基本上我想打补丁函数调用另一个函数,以便我可以确认他们已经被调用。 这在js中可能吗? (我正在使用Mocha / Chai / Sinon进行testing)。 我想要做的简化版本: // in render.js export helper = function() {} export default = function() { helper() } // in the render-test.js import render, { helper } from 'render' // what I'd like to to: helper = sinon.spy() render() assert(helper.called, true)

当用Chai进行unit testing时,“TypeError:无法读取属性”的“undefined”地址是什么意思?

当使用chai进行unit testing并且没有任何testing通过时,我仍然收到这个错误消息。 这在这方面意味着什么? 谢谢。 var chai = require('chai'); var chaiHttp = require('chai-http'); var server = require('../server.js'); var should = chai.should(); var app = server.app; var storage = server.storage; chai.use(chaiHttp); describe('Shopping List', function() { it('should list items on GET', function(done) { chai.request(app) .get('/items') .end(function(err, res) { res.should.have.status(200); res.should.be.json; // jshint ignore:line res.body.should.be.a('array'); res.body.should.have.length(3); res.body[0].should.be.a('object'); res.body[0].should.have.property('id'); res.body[0].should.have.property('name'); […]

Promise.all()等同于promise.then()。then()

这是代码 Promise.all([ promise1, promise2, ]) .then(() => doSomething()) 相当于 promise1 .then(() => promise2) .then(() => doSomething()) 我认为它们是相同的,但是它们在财富和摩卡应用上performance不一样。 以下是关于这个应用程序的更多细节 我正在使用fortune.js ,我想用摩卡书写一些testing。 我想要实现的是使用beforeEach钩截断数据库中的表,然后插入一些preifined值。 所以,如果我有两个名为customer和user表,我会做这样的事情 beforeEach(function () { return Promise.all([store.delete('user'), store.delete('customer')]) .then(() => store.create('customer', { id: '0987654321234567890', // More data })) .then(() => store.create('user', { id: 'qwertyuioppoiuytrewq', customer: '0987654321234567890', // More data })); }); 这个代码不稳定,有时候工作,有时不工作,我可以find为什么(成功率约50%), 但是,如果我切换到这个代码它正在工作: beforeEach(function () […]

在摩卡testing中使用for循环

我是摩卡新手,我想尝试使用for循环来创buildtesting用例。 我想testing一个我input标准12小时时间的函数,并把它输出到24小时军事时间。 这是它的样子。 exports.main = function(time) { var hr = parseInt(time.substr(0,2)); var period = time.substr(8,10); if (period == 'AM' && hr == 12) { hr = '0'; } if (period == 'PM' && hr < 12) { hr += 12; } hr.toString(); if (hr < 10) { hr = '0' + hr; } return time […]

asynchronous摩卡testing(与Chai断言库)应该失败,但被标记为通过

我已经在TypeScript中使用mochatesting框架和chai断言库(我对这三者都是新手)写了一些testing,并看到引发了一个错误,并在下面的代码中调用了assert.fail()。 但是,testing仍然被标记为通过。 我很困惑,为什么会这样呢,如果我在承诺上做错了什么。 另外,如下所示,还有一个UnhandledPromiseRejectionWarning。 我不明白为什么这被标记为未处理,因为我已经包括一个catch块。 我将不胜感激关于如何解决这个问题的build议,谢谢! User.all() .then((users) => { expect(users.length).to.equal(0); return User.create('test@test.email', '12345', 'test', true, true); }) .then(() => { return User.all(); }) .then((users) => { expect(users.length).to.equal(1); }) .catch((error) => { assert.fail(); }); debugging控制台 ✓ should create a new record with existing e-mail in the database (node:29903) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 3): […]

在Mocha中asynchronoustesting大量数据

我需要通过电子邮件列表循环,并检查他们validation。 如果一个人不能确认,我会抛出一个错误让摩卡知道。 it('validates valid email addresses', function (done) { [ 'oliverash@me.com', 'oliver.ash@me.com', 'oliver-ash@me.com', 'oliver+ash@me.com', 'oliver\'s-email@me.com' ].forEach(function (value) { user.email = value user.validate(function (err) { // Failed to validate, throw an error if (err) { throw new Error() } }) }) // All documents validated, so call `done` done() }) 但是,这个代码似乎并不正确,只有数组中的最后一封电子邮件无效时才会失效。 我究竟做错了什么?

在摩卡testing中没有发现柴的出口

我已经创build了简单的摩卡testing。 当使用Node“assert”模块时,它完美地工作。 我从命令行(Mocha作为全局节点模块安装)运行它: $ mocha myTest.js ․ 1 test complete (6 ms) 该脚本如下所示: var assert = require("assert") describe('Array', function(){ describe('#indexOf()', function(){ it('should return -1 when the value is not present', function(){ assert.equal(-1, [1,2,3].indexOf(5)); assert.equal(-1, [1,2,3].indexOf(0)); }) }) }) 那么,我试图添加柴而不是断言库。 我先安装它: npm install chai 所以,在我的项目中创build了目录node_modules。 太好了。 然后,我改变了脚本使用柴: var chai = require("chai"); describe('Array', function(){ describe('#indexOf()', function(){ it('should […]