Tag: sinon

摩卡testing案例res.render不工作

我正在编写一个简单的路由testing用例。 我用mocha , chai-http和sinon来检查是否显示正确的页面。 这是用户提供信息的contact页面。 联系人页面现在再次呈现。 以下是我的testing案例: const chai = require('chai'); const chaiHttp = require('chai-http'); const sinon = require('sinon'); const ejs = require('ejs'); var app = require('../app'); var path = require('path'); var fs = require('fs'); var Contact = require('../models/contacts'); chai.use(chaiHttp); var should = chai.should(); var expect = chai.expect; describe('Contact', () => { describe('/POST Contact', () […]

Sinonfunction存根:如何在模块内调用“自带”function

我正在为node.js代码编写一些unit testing,并使用Sinon通过存根函数调用 var myFunction = sinon.stub(nodeModule, 'myFunction'); myFunction.returns('mock answer'); nodeModule看起来像这样 module.exports = { myFunction: myFunction, anotherF: anotherF } function myFunction() { } function anotherF() { myFunction(); } Mocking对于像nodeModule.myFunction()这样的用例显然nodeModule.myFunction() ,但是我想知道如何在用nodeModule.anotherF()调用时如何在另一个F()内模拟myFunction()调用?

Sinon称为With和calledWithMatch失败的对象编辑:Sinon间谍对象的构造函数

我是unit testing新手,正在使用Mocha,Sinon和Chai来testingNodeJs代码。 问题是我对stub.calledWith()的期望总是失败,即使testing错误显示了两个在语法上相同的对象。 我使用Sinon来存储一个mongoose模型的保存方法,并检查这个存根被调用了正确的细节。 我正在testing的function: async function createGroup(details) { 'use strict'; Logger.info(`create group called`); const group = new UserGroup(this.formatGroup(details)); const result = await group.save(); Logger.verbose(`results of save: ${JSON.stringify(result)}`); return result; } unit testing describe('object creation', function () { 'use strict'; const saveStub = sinon.stub(UserGroup.prototype, 'save'); mongoose.Promise = Promise; beforeEach(function (done) { saveStub.reset(); return done(); }); […]

testingexpression中间件

我有以下代码来testing: const Status = require('http-status-codes'); const passport = require('passport'); const Users = require('../models/users.js'); const authentication = { // Authenticate User Middleware authenticateUser: function authenticateUser(req, res, next) { return passport.authenticate('bearer', { session: false, failWithError: false }, (err, user, info) => { if (err) { return res.status(500).json({ message: err }); } if (user) { return Users.findOne({ auth_ref: […]

Sinon存根并testingAWS-SDK的承诺

//正在testing的类 var AWS = require('aws-sdk'); var s3Export = function() { var s3Client = new AWS.S3(); this.getObject => (params) => { return s3Client.getObject(params).promise(); } }; module.exports.S3 = new s3Export(); //testing类 describe('s3-wrapper-tests', function() { var app, aws, s3, getObjectData = {Bucket: 'test-bucket', Key: 'test-file'}, deleteObjectData, deleteObjectsDatas, putObject; before(() => { s3 = sinon.stub({ getObject: function(params) { getObjectData […]

你将如何嘲笑/分支一个快速路线的请求?

例如,如果我想在这个给定的方法中嘲笑一个请求,我该怎么做? app.get('/test', exposeDb, function(req, res) { req.dbService.getUserByID(req.body, function(err, result) { if (result == 5) { console.log(result); res.json({result: result}); } else { console.log(result); res.json({result: result}); } }); }); 这是我目前的testing: describe('Test', function() { beforeEach(function() { var getUserByIDStubE = sinon.stub(dbService, 'getUserByID').callsFake(cb => { cb(undefined, 5); }); }); it('TESTSETSTETS', function(done) { chai.request(server) .get('/test') .send({ req }) .end(function (err, res) […]

我应该如何侦察在另一个对象内调用的构造函数?

比方说,我有一个对象,有一个function,创build另一个对象作为其操作的一部分。 sinon = require('sinon') chai = require 'chai' sinonChai = require("sinon-chai") chai.use(sinonChai) chai.should() Paper = {} Paper.Origami = require('../assets/src/coffee/origami.coffee').Paper.Origami describe '#throwOrigami', -> it 'should create origami and throw it', -> m = new Monkey() throwSpy = sinon.spy(m, 'throwOrigami') createSpy = sinon.spy(Paper, 'Origami') # next function creates origami, then 'throws' it at someone m.throwOrigami(); createSpy.should.have.been.calledWithNew throwSpy.should.have.been.calledOnce […]

如何使用sinon来存储neo4j Thingdom模块的函数

我有一些问题,写一些unit testing,我想在这里stub的functionneo4j Thingdom模块。 经过几个小时的失败尝试,我一直在networkingsearch,我发现的唯一参考点是一个示例项目,曾用于sinon.createStubInstance(neo4j.GraphDatabase); 去掉整个对象。 对我来说,因为这似乎是一个扔掉的项目,我想要一个更细粒度的方法,所以我可以testing,例如Thingdom API概述时节省一个节点,你创build它(非持续)坚持它,然后你可以索引它,如果你希望哪些是三个调用,可以在多个特定的testing,我不知道可以用createStubInstance设置(即发现,如果函数被调用一次)可以概述。 例子“创build节点”function(这只是为了说明function,我试图用testing来build立它) User.create = function(data, next){ var node = db.createNode(data); node.save(function(err, node){ next(null,node); }); }; 我能够存根顶级对象(neo4j.GraphDatabase)的function,所以这个工作: it('should create a node for persistence', function(){ var stub = sinon.stub(neo4j.GraphDatabase.prototype, 'createNode'); User.create({}, res); stub.calledOnce.should.be.ok; stub.restore(); }); 问题出现在下一组testing中,我希望运行哪些testing,如果调用将节点持久保存到数据库中(节点,保存)方法: 我不知道这是可能的,或者它可以实现,但我已经尝试了几个变种的存根和非似乎工作(在neo4j.Node,neo4j.Node.prototype),他们都回来了不同的错误,如可以没有定义等,这可能是由于createNode函数生成的节点,而不是我的代码直接。 有什么我明目张胆地做错了,我错过了这个把戏,或者你可以不这样做吗? 如果不是什么是最好的战术来处理这样的东西?

模拟一个模块NodeJs的实例

如何在我正在testing的方法中模拟一个module的实例? 方法示例: var item = require('item'); // module to mock // underTest.js module.exports = { parse: function(model) { return new item(model).parse(); } } 我想嘲笑item模块并声明parse方法已被调用。 我的testing套件使用sinon和mocha任何例子来实现,将不胜感激。

sinon存根不能在nodejstesting中工作

我正在编写Invoicer模块的testing。 我的testing有两个问题。 第一个是邮件仍然被发送,尽pipe已经emailjs模块(第一次testing),第二个问题是我的第二次testing超时后2secs。 我不明白为什么? 有谁能帮我解决这个问题吗? Invoicer 'use strict'; var fs = require('fs'); var _ = require('underscore'); var request = require("request"); var email = require("emailjs"); exports.Invoicer = function (url, context) { // set-up our transporter object with credentials var transporter = email.server.connect({ user: 'Pinoquio', password: 'sdlfkjlj', host: "pinoquio@gmail.com", port: 444, tls: true }); // read html […]