Articles of 摩卡咖啡

节点js做方法链的testing存根

我的function是sendMail我想存根functionmailjet,它有一个方法链mailjet.post('发送')。请求… 我想断言callback被称为邮件成功或失败。 那么我如何存根这个方法链? var sendMail = function (templateName, callback) { // From template name find template id of mailjet mailingExternalTemplateModel.findMailingTemplateId(templateName, function (err, result) { const request = mailjet .post("send") .request(params) request .then((result) => { if (typeof callback === 'function') { callback(null, result.body); } }) .catch((err) => { if (typeof callback === 'function') { callback(err, null); […]

unit testing用Mocha返回承诺的多个asynchronous调用

我想了解如何最好的unit testing我的asynchronousCommonJS模块。 在处理多重链式承诺时,我正在努力理解最佳实践。 让我们假设我有以下模块定义: module.exports = function(api, logger) { return api.get('/foo') .then(res => { return api.post('/bar/' + res.id) }) .then(res => { logger.log(res) }) .catch(err => { logger.error(err) }) } 我有以下spec文件试图testing正确的调用。 var module = require('./module') describe('module()', function() { var api; var logger; var getStub; var postStub; beforeEach(function() { getStub = sinon.stub(); postStub = sinon.stub(); api […]

在module.exports方法中使用sinontesting方法调用

我试图testing一下,如果使用摩卡,柴和颂,给定了某些特定的条件。 这里是代码: function foo(in, opt) { if(opt) { bar(); } else { foobar(); } } function bar() {…} function foobar() {…} module.exports = { foo: foo, bar: bar, foobar:foobar }; 这是我的testing文件中的代码: var x = require('./foo'), sinon = require('sinon'), chai = require('chai'), expect = chai.expect, should = chai.should(), assert = require('assert'); describe('test 1', function () { […]

Node Expresstesting模拟res.status(状态).json(obj)

尝试testing我的方法时出现以下错误: TypeError:不能调用未定义的方法'json' 下面是我的代码,如果我从testing方法中删除res.status,我会得到'状态'相同的错误。 我如何定义'JSON',所以我没有得到一个exception抛出: res.status(404)上传.json(误差); 当testing这个function。 stores.js { //the get function declared above (removed to ease of reading) // using a queryBuilder var query = Stores.find(); query.sort('storeName'); query.exec(function (err, results) { if (err) res.send(err); if (_.isEmpty(results)) { var error = { message: "No Results", errorKey: "XXX" } res.status(404).json(error); return; } return res.json(results); }); } storesTest.js […]

在摩卡中用sinon创build请求存根

我正在使用mocha来testing一些类,我需要创build一个request库的存根。 我正在使用sinon ,并且能够创buildrequest.get方法的存根,但是我无法创buildrequest方法的存根(http调用尝试连接到服务器)。 正如我所读到的, request.get是request的别名,但是当我存根request.get它对request调用没有任何影响。 此代码工作(使用request.get ): 在testing中: request = require 'request' describe "User test", -> user = {} before (done) -> user = new test.user('Ander', 18) sinon.stub(request, 'get').yields(null, {statusCode: 200}, 'foo') done() after (done) -> request.get.restore() done() it "testing server response", -> user.getData().should.equal 'ander' 来源: request = require 'request' class User contructor(@name, @age): -> […]

如何在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 ?