Tag: 摩卡

用Mocha设置JSDOM

我试图用sinon的模拟和间谍来testingRedux组件和asynchronous操作,但是一旦我将Sinon导入任何testing文件,运行下面的npm脚本: mocha – 需要testing/ helpers / browser.js –compilers。:babel-core / register –opts test / client / ** / *。{js,jsx} – recursiontesting/客户端 我得到以下错误: var div = typeof document !== "undefined" && document.createElement("div"); ^ TypeError:document.createElement不是… / node_modules / sinon / lib / sinon / util / core / deep-equal.js中的函数:3:55 browser.js是我设置JSDOM的地方: import { JSDOM } from 'jsdom'; const doc […]

告诉摩卡在哪里寻找testing文件

我怎样才能告诉Mocha在哪里寻找我的testing文件? 我的testing文件不驻留在标准项目根目录./test文件夹中。 我的testing位于Modules/.*/Tests/ 。 我试图使用–grep命令行参数,但我有一个感觉,这个参数寻找testing名称不是testing文件名。 摩卡 – 格雷格Modules\/.*\/Tests 上面的命令给出了错误: 警告:找不到任何匹配模式的testing文件:test 没有findtesting文件

MongoDB / Mongooseunit testing – 最佳实践?

我正在编写一个npm包,通过mongoose把GIS数据导入到MongoDB中。 我已经使用mocha编写了unit testing来testing保存mongoose模型之前发生的数据转换。 我想确保所有的mongoose数据都正确保存到数据库(包括需要发生的任何更新)。 在这种情况下最好的做法是什么? 我的直觉创build一个testing集合,插入所有logging,确保它看起来像我期望的样子,然后删除集合。

Sinon – 何时使用间谍/嘲笑/存根或只是简单的断言?

我试图理解Sinon在一个节点项目中是如何正确使用的。 我已经通过例子和文档,但我还没有得到它。 我已经build立了一个具有以下结构的目录来尝试通过各种Sinonfunction来了解它们的适用位置 |–lib |–index.js |–test |–test.js index.js是 var myFuncs = {}; myFuncs.func1 = function () { myFuncs.func2(); return 200; }; myFuncs.func2 = function(data) { }; module.exports = myFuncs; test.js从以下开始 var assert = require('assert'); var sinon = require('sinon'); var myFuncs = require('../lib/index.js'); var spyFunc1 = sinon.spy(myFuncs.func1); var spyFunc2 = sinon.spy(myFuncs.func2); 诚然,这是非常人为的,但现在我想testing任何调用func1导致func2被调用,所以我会用 describe('Function 2', function(){ it('should […]

我如何使用npm脚本运行摩卡?

我已经为我的脚本实现了一个testing用例,当我在Webstorm中使用mochaconfiguration执行它时,它运行得很好。 我的testing脚本的名字是adminTest.js。 现在我想要一个npm脚本来从控制台或者以后的版本服务器运行它。 为此,我在package.json中创build了一个脚本条目 这里是完整的文件: { "name": "cdh", "version": "0.0.1", "description": "CDH connector", "main": "cdh.js", "private" : true, "dependencies": { "cli-color": "^1.0.0", "handlebars": "^4.0.3", "sync-request": "^2.0.1", "jslint": "^0.9.3", "xmldom": "^0.1.19", "xpath": "^0.0.9", "mocha": "2.3.3 ", "proxyquire": "1.7.3", "mocha-sinon": "1.1.4", "jasmine" : "2.3.2", "chai" : "3.4.1" }, "devDependencies": {}, "scripts": { "test": "node ./node_modules/mocha/bin/mocha tests/**/*Test.js –reporter […]

摩卡如何recursionsearch我的`src`文件夹的特定文件名模式?

在我的npm包中,我想模仿Meteor的模式:源文件(名为client.js )有一个testing文件(名字为client.tests.js ),它位于src/文件夹中。 testing使用npm test命令运行。 我正在使用文档到't'。 我不想在我的包testing命令中使用find 。 我明白,摩卡可以recursion地执行testing: 摩卡 – recursion 我明白摩卡可以使用–recursive标志在特定的子文件夹中执行testing: 摩卡src – recursion 我也明白,我可以通过传递*.tests.js指定一个glob来过滤文件: 摩卡* .tests.js 但是,我想要所有三个。 我想摩卡只testingsrc文件夹中以tests.js结尾的文件,recursion检查子目录。 mocha –recursive *.tests.js // See the files? $ > ll ./src/app/ total 168 -rw-r–r– … client.js -rw-r–r– … client.tests.js // Option A $ > mocha –recursive *.tests.js Warning: Could not find any test files […]

无法在同步模式下运行Mocha.js

我正在用一个nodejs实例运行mochatesting存储过程。 我有这个testing框架: var chai = require('chai'), MyReporter = require("../MyReporter.js"), chokidar = require('chokidar'), expect = chai.expect, should = chai.should, assert = chai.assert; var Mocha = require('mocha'); amochai = new Mocha({ bail: false, debug: true }); amochai.addFile("mytest_v1.js"); function runMocha(callback) { amochai.run(function () { callback(); }); } watcher.on('change', function(path, stats) { runMocha(function () {}); } 问题 :我的testing总是以asynchronous模式运行,尽pipe我所有的testing都是这样写的: describe('Mysql […]

如何在Mochatesting用例中使用setTimeout()函数?

我正在Mocha / Node js中编写一个testing,并希望在执行一段代码之前使用setTimeout来等待一段时间。 我怎样才能做到这一点? 看起来在摩卡testing案例中,setTimeout()不起作用。 (我知道你可以设置每个testing用例和每个testing文件的超时时间,这不是我需要的。) 在一个运行Node的js文件中,即node miniTest.js ,这将等待3秒钟,然后在setTimeout函数内部打印行。 miniTest.js console.log('waiting 3 seconds…'); setTimeout(function() { console.log('waiting over.'); }, 3000); 在一个使用Mocha运行的js文件中,即mocha smallTest.js ,这不会等待,并且将会在完成执行并退出之前,不会在setTimeout函数内部打印行。 smallTest.js: mocha = require('mocha'); describe('small test', function() { it('tiny test case', function() { console.log('waiting 3 seconds…'); setTimeout(function () { console.log('waiting over.') }, 3000); }); });

在testingmocha中的nodeJS时,域不能正确捕获错误

当运行利用域进行error handling的testing时,即使库内的域处理程序应该发现错误,Mocha仍然会抛出错误。 如果我在Mocha之外执行代码,它的function正确导致我相信问题是Mocha。 例: foo.js module.exports = function(done) { var domain = require("domain"); var d = domain.create(); d.on("error", function() { done(); }); d.run(function() { throw new Error("foo"); }); } test.js – 在foo.js抛出的错误没有被域捕获。 describe("test", function() { it("should succeed", function(done) { var foo = require("./foo.js"); foo(function() { console.log("done"); done(); }); }); }); result : error thrown script.js […]

我怎么能得到伊斯坦布尔与节点,摩卡,茉莉花和js要求

我有一个现有的testing套件,使用mocha,require和jasmine在node.js中正常运行,testing通过psake powershell脚本运行。 我正在尝试添加testing覆盖率,所以要运行unit testing而不是: 节点unitTest.js 我在做 伊斯坦布尔封面unitTest.js 这似乎工作,但只给了我关于unitTest.js本身的覆盖范围信息,但没有在项目中使用任何其他实际的JavaScript文件。 我猜这是因为要求/摩卡的组合,所以它不知道我使用的js文件。 我尝试手动将所有文件作为代码覆盖之前的一个步骤,并在复制/检测的文件上运行相同的命令,但得到相同的结果。 有关使这项工作的任何提示? 这是unitTest.js的最后一部分 requirejs(['mocha'], function(Mocha) { var mocha = new Mocha({reporter: (process.env['TEAMCITY_VERSION'] ? 'teamcity' : 'spec')}); // Hack to establish the global variables (sigh) mocha.suite.emit('pre-require', global, __filename, mocha); fswalk(__dirname, function(err, results) { if (err) console.warn(err); else { var testName = process.argv[2] || ""; console.log("testName: " + […]