Articles of 摩卡

无法使用摩卡开始testing

以下是我运行摩卡testing时遇到的错误… upquire@0.0.0 test D:\tecsol\mtv mocha test/bootstrap.test.js test/unit/**/*.test.js 1) "before all" hook 0 passing (3m) 1 failing 1) "before all" hook: Error: timeout of 50000ms exceeded. Ensure the done() callback is being called in this test. at null.<anonymous> (D:\tecsol\mtv\node_modules\mocha\lib\runnable.js:189:19) 以下是我的bootstrap.test.js文件: var Sails = require('sails'); var sails; before(function(done) { this.timeout(5000); Sails.lift({ // configuration for testing purposes }, […]

如何让Sinon的fakeServer在Mocha和Node中响应jQuery.ajax调用?

我在这里看了很多答案,那里有博客文章,在Sinon自己的问题跟踪器中发布的问题,还没有发现任何明确的。 我到目前为止大概是: import XMLHttpRequest from "xhr2"; … beforeEach((done) => { jsdom.env("<!doctype html><html><body><div></div></body></html>", (error, window) => { for (var i in require.cache) {delete require.cache[i];} Object.assign(global, _.pick(window, "document", "navigator")); global.window = window; window.console = global.console; document.body.dataset = {}; … global.$ = require("jquery"); global.$(() => { global.$.support.cors = true; global.$.ajaxSettings.xhr = () => {return new XMLHttpRequest();}; const fakeServer […]

摩卡返回“callback不是一个函数”asynchronous调用

我正尝试使用nodejs(es6 + babel)和mocha一起。 这是我testing的基类: import cheerio from 'cheerio'; import ResourceRequest from './ResourceRequest'; export default class HtmlValueParser { constructor(url, headers) { this.rr = new ResourceRequest(url, headers); this.body = null; this.$ = null; } getValue(query) { if (!query) { return; } if (this.$ === null){ this.$ = cheerio.load(this.body); return 'toto'; }else { return 'titi'; } } getAValue(query, […]

testing与Mockgoose失败导致MongoError:拓扑被破坏

我正在用Mockgoose / Mongoose(使用Mocha / Chai作为testing套件)进行一系列的testing。 如果我的某个testing发生故障(例如,由于.should.be.deep.equal()失败),所有后续testing都会失败,并显示消息MongoError: topology was destroyed 这里有一些相关的片段: mockgoose(mongoose); before(function(done) { mongoose.connect('mongodb://fake.test/TestingDB', function(err) { done(err); }); }); afterEach(function(done) { mockgoose.reset(); done(); }); // Test Cases describe('Testing the functions that deal with users and locations:', function() { // Test Setup var req beforeEach(function(done) { req = {}; mockgoose.reset(); done(); }); beforeEach(function(done) { sensors.create(testData.deviceData, function(err, […]

为什么使用supertest代替expressJS的unit testing?

在search如何testing我的node.js软件时,我遇到了许多build议使用Supertest的答案。 在使用Supertest之前,我正在testing我的应用程序: app.get('/', base_road); function base_road(req, res) { return res.json("Hello world"); } it("base road", function() { base_road(mocked_req, {json: function(data) { assert.isEqual(data, "Hello world"); }}); }); 我对这种testing方式并不满意,因为嘲笑可能会变得很难阅读,但是我觉得如果使用超types,我会比unit testing更接近e2e。 我应该使用supertest做unit testing吗? 我的实际testing方式是否正确?

嘲笑的对象看起来像mongoose的对象

我刚刚开始瓦/摩卡,sinon和mongoose。 我在mongoose有一个模式/模型: var PersonSchema = new Schema({ name: { type: String, required: true }, employer: { type: Schema.Types.ObjectId, ref: 'Employer' } }); mongoose.model('Person', PersonSchema); var EmployerSchema = new Schema({ name: { type: String, required: true } }); mongoose.model('Employer', EmployerSchema); 我有一个方法来帮助查询: var getPersonById = function(id, callback) { Person.findById(id, function(err, person) { if (err) return callback(err); // […]

我如何获得它之外的节点/摩卡错误的堆栈跟踪

当我通过Node.js运行我的Mochatesting套件并且代码获取错误时,Node输出该错误的堆栈跟踪…除非它是通过对未定义的variables进行调用而导致的TypeError,在这种情况下,我没有堆栈跟踪或testing失败,只需一行输出即可。 例如,如果我有以下代码: foo.bar(); // foo is undefined 我只是得到: [TypeError: Cannot read property 'bar' of undefined] 当我运行摩卡。 有什么办法让节点/摩卡输出这种错误的完整堆栈跟踪? 没有这个难以find问题的抱怨。 编辑:其实,它似乎也有问题发生在哪里的错误。 如果它发生在一个describe里面,我不会得到一个堆栈跟踪,但是如果它发生在it内部it我会这样做。 在describe s(或其他没有堆栈跟踪的地方)中是否有任何方法来显示堆栈跟踪的错误?

在节点> = 4.x中,伊斯坦布尔的性能很差

在节点4.x (和5.x)中运行伊斯坦布尔检测的JavaScript代码比在节点0.12.x上慢4倍。 具体来说,我有一个摩卡testing,需要约500毫秒完成非仪表代码。 相同的testing在节点0.12.x的检测代码上花费约5000毫秒。 同样的testing在节点5.x的检测代码上花费约20000毫秒。 在更高级的节点中性能如此糟糕的任何原因? 注意:为了隔离问题,我运行了istanbul instrument命令。 仪器需要1秒钟。 然后,我对仪表代码进行了Mochatesting, 没有生成伊斯坦布尔报告或检查报道 。

将上下文传递给“require”d javascript模块

我只是玩了一些testing,我一直在这个例子来编写一个模块: http : //www.richardrodger.com/2013/09/27/how-to-make-simple-node- JS-模块,工作在该浏览器/#。Vt74CvmLT0M 我正在使用一个更改,我看到某处检查“窗口”,并使用它,否则使用“这个”。 我简化了一个例子: (function() { 'use strict'; var root = this; var previous_myModule = root.myModule; var myModule = function() { }; myModule.noConflict = function() { root.myModule = previous_myModule; return myModule; }; if (typeof exports !== 'undefined') { if (typeof module !== 'undefined' && module.exports) { exports = module.exports = myModule; } […]

在Jenkins中使用blanket.js覆盖率报告

我有一个运行摩卡testing的node.js项目,并使用毯子生成覆盖报告。 我已经设法生成了覆盖率报告,但是我不确定如何生成可以在Jenkins中使用和查看的报告。 有什么build议么? 我正在寻找类似于Cobertura插件的结果( https://wiki.jenkins-ci.org/display/JENKINS/Cobertura+Plugin )。