Tag: unit testing

如何在nodejs上用mochaunit testing控制台输出

考虑下面的示例javascript代码: function privateFunction (time) { if (time < 12) { console.log('Good morning'); } if (time >= 12 && time <19) { console.log('Good afternoon'); } else { console.log('Good night!'); } }; 我应该怎样使用mocha(可能是sinonjs)对nodejs进行unit testing,注意到这是一个在模块内调用的私有函数? 我需要传入参数,并检查函数是否正确logging到控制台。 我可以做同样的console.warn和console.error ?

如何模拟mocha.js进行unit testing的依赖类?

鉴于我有两个ES6类。 这是A类: import B from 'B'; class A { someFunction(){ var dependency = new B(); dependency.doSomething(); } } 和B类: class B{ doSomething(){ // does something } } 我使用摩卡进行unit testing(与ES6的babel),柴和sinon,这真的很棒。 但是在testingA类时,我怎样才能为B类提供一个模拟类? 我想嘲笑整个B类(或所需的function,实际上并不重要),以便类A不执行真正的代码,但我可以提供testingfunction。 这就是摩卡testing现在的样子: var A = require('path/to/A.js'); describe("Class A", () => { var InstanceOfA; beforeEach(() => { InstanceOfA = new A(); }); it('should call B', () […]

如何在nodejs中unit testing“私有”效用函数

我目前正在为nodejs应用程序编写一些testing。 假设我有一个像这样的模块: module.exports = function myModule(moduleParam) { var someVar; …. …. function helper(param) { return param + someVar; } return { doSomething: function (bar) { …. …. var foo = helper(bar); …. …. } }; }; 假设“帮助者”function只在模块中有用,不应该暴露在外面。 testing它的“最佳实践”是什么? (当然,我可以将doSomething函数作为一个整体进行testing,但是这样,“帮助”函数在特定情况下以“黑盒”方式进行testing)。 我使用nodeunit作为testing框架,但是我可以根据需要进行更改。

嘲笑与Sinon.JS的JavaScript构造函数

我想unit testing下面的ES6类: // service.js const InternalService = require('internal-service'); class Service { constructor(args) { this.internalService = new InternalService(args); } getData(args) { let events = this.internalService.getEvents(args); let data = getDataFromEvents(events); return data; } } function getDataFromEvents(events) {…} module.exports = Service; 如何模拟与Sinon.JS构造函数为了模拟getEvents的internalServicetestinggetData ? 我看着JavaScript:使用Sinon的嘲笑构造,但无法提取解决scheme。 // test.js const chai = require('chai'); const sinon = require('sinon'); const should = chai.should(); […]

在nodejs中自动进行Web UItesting

有没有自动化的networkingtesting库nodejs,最好是无头的?

package.json生成/ npm未使用的包

我在我的项目中引入了unit testing,为此,我需要使自己成为一个package.json文件。 第一个问题是,你正在使用哪个unit testing suite ? 我期待mocha ,这似乎是非常标准的Node.js项目。 第二个问题是:有什么不可思议的方式来生成一个package.json文件? (对于依赖和版本) 第三个问题是:在开发我的项目的过程中,我一直在testing大量的npm packages ,现在我遇到了很多可能未使用的包。 有什么办法可以告诉哪一个是无用的? (我看到npm list installed哪个是有用的,虽然)

node.js:以任何方式导出文件中的所有函数(例如,启用unit testing),一个接一个

在node.js中,是否有任何快捷方式导出给定文件中的所有function? 我想做unit testing的目的,因为我的unit testing是从我的生产代码单独的文件。 我知道我可以通过手动导出每个function,如下所示: exports.myFunction = myFunction; 但是,我想知道是否有一个更简单/闪烁的方式来做到这一点。 (是的,我意识到模块化的原因,并不总是一个好主意,出口的所有function,但unit testing的目的,你确实希望看到所有的小function,所以你可以逐件testing)。 谢谢!

节点的assert.throws完全破坏?

鉴于此代码: var assert = require('assert'); function boom(){ throw new Error('BOOM'); } assert.throws( boom(), Error ); 我得到这个输出,节点0.4.9: node.js:134 throw e; // process.nextTick error, or 'error' event on first tick ^ Error: BOOM at boom ([EDITED]/assert.throws.test.js:4:9) at Object.<anonymous> ([EDITED]/assert.throws.test.js:7:17) at Module._compile (module.js:402:26) at Object..js (module.js:408:10) at Module.load (module.js:334:31) at Function._load (module.js:293:12) at Array.<anonymous> (module.js:421:10) at EventEmitter._tickCallback (node.js:126:26) […]

使用Yeoman和Mocha进行NodeJS和客户端的全面集成testing

我有很好的与Yeoman一起运行的客户端testing。 Yeoman编译我的CoffeeScript,在服务器上打开testing页面,使用PhantomJS访问它,并将所有testing结果传递到命令行。 这个过程相当不好,testing结果通过alert()消息传递给Phantom进程,Phantom进程创build一个临时文件,并将消息填充为JSON。 Yeoman(well,Grunt)遍历临时文件,parsingtesting并将其显示在命令行中。 我解释过程的原因是我想添加一些东西。 我也有服务器端testing。 他们使用mocha和supertest检查API端点和Redis客户端,以确保数据库状态符合预期。 但我想合并这两个testing套件! 我不想为服务器调用写客户端模拟响应。 我不想发送服务器模拟数据。 一路上我会换服务器或客户端,testing不会失败。 我想做一个真正的集成testing。 因此,无论何时在客户端testing完成,我想要一个钩子在服务器端运行相关的testing(检查数据库状态,会话状态,移动到不同的testing页面)。 有没有解决办法? 或者说,从哪里开始对Yeoman / Grunt / grunt-mocha进行黑客攻击? 我觉得grunt-mocha里的Phantom Handlers是一个很好的开始: // Handle methods passed from PhantomJS, including Mocha hooks. var phantomHandlers = { // Mocha hooks. suiteStart: function(name) { unfinished[name] = true; currentModule = name; }, suiteDone: function(name, failed, passed, total) { delete unfinished[name]; […]

Supertest定制节点中的服务器

请温柔一下。 我是新来的asynchronous编码,并已被抛入一个密集的项目,使用节点开发和API服务器。 我很喜欢它,但有些事情不是自然而然的。 我们的项目是使用express js构build的。 我们有一个文件server.js,在这里我们实例化一个express服务器,然后实例化我们的路由器等等。 我需要现在(部分)完整的服务器进行集成testing。 通常我从命令行运行“%node server.js”,然后使用python请求或curl make请求并检查响应。 现在我已经负责编写一个单元和集成testing套件,以便我们可以自动进行testing。 我一直在使用摩卡,现在正在尝试使用超级集成进行集成testing。 问题是supertest需要一个服务器对象,然后它将应用testing,然而我们的文件,build立我们的服务器对象不会返回任何东西。 我不想修改该文件,所以我难以理解如何访问用于testing的服务器对象。 我的服务器文件看起来(部分)如下所示: var express = require('express') var app = express(); // Express Configuration app.use(express.favicon()); //handles favicon request, which keeps it out of the log when using a browser 🙂 app.use(express.bodyParser()); //slurps up the body in chunks the node.js way 🙂 // …and […]