Articles of 存根

在node.js中对unit testing中的依赖关系进行存根

我从node.jsunit testing开始,并且一直在研究node.js中最常用的unit testing框架。 我想从最常用的框架开始,使事情变得简单,因为可能有更多的信息。 据许多网站可能是摩卡。 虽然我理解这个模块来进行集成testing,但我并不知道如何使用诸如存根依赖之类的特性来处理它。 我已经看到摩卡不提供模拟/存根function,所以我不知道人们通常如何处理这些问题。 所以我想知道现在最stream行的unit testing模块是什么模块,依存关系……一个简短的例子会很棒。 谢谢

Sinon stubbing函数作为parameter passing

我有以下的示例类: function Example() {…} Example.prototype.someFunc1() {…} Example.prototype.someFunc2() {…} Example.prototype.func(func) {var res = func(); …} 我通常调用Example#func() ,如下所示: var example = new Example(); example.func(example.someFunc1) // or like this, depending on what I want example.func(example.someFunc2) 现在我在我的testing中存根Example#someFunc1()如下: var example = new Example(); sinon.stub(example, 'someFunc1').returns(…); exmaple.func(example.someFunc1); 问题是Example#someFunc1()没有被这种方式存根并被正常调用。 在这种情况下我能做些什么?

Sinon – Stub模块函数,并且不dependency injection地进行testing

我有一个代理模块,将function调用转发到服务。 我想testing是否调用服务函数,当这个代理模块中的函数被调用。 这是代理模块: const payService = require('../services/pay') const walletService = require('../services/wallet') const entity = { chargeCard: payService.payByCardToken, // … some other fn } module.exports = entity 基于这个例子和这个回应 ,我试图存根需要的模块“payService”: const expect = require('expect.js') const sinon = require('sinon') const entity = require('../entity') const payService = require('../../services/pay') describe('Payment entity,', () => { it('should proxy functions to each service', […]

如何使用sinon来模拟作为函数导出的节点模块的函数/属性?

我有一个作为function导出的服务模块。 我需要传递一些东西,像一个configuration对象,所以它需要保留这个结构。 我正在尝试从服务中删除一个函数,但无法弄清楚。 在我的应用程序,我有一个函数,使testing期间有问题的API调用,所以我想存根。 (我知道我必须写我的testing不同来处理asynchronous问题) // myService.js module.exports = function(config) { function foo() { returns 'bar'; } return { foo: foo }; }; // test.js var config = require('../../config'); var request = require('supertest'); var chai = require('chai'); var expect = chai.expect; var sinon = require('sinon'); var myService = require('./myService.js')(config); describe('Simple test', function(done) { it('should expect […]

使用SinonJS存根(与rewire)

我有一个function: var publish = function(a, b, c) { main = a + getWriterName(b,c); } getWriterName是另一个函数: var getWriterName = function(b,c) { return 'Hello World'; } 我想testing“发布”function,但我不想在testing“发布”时运行“getWriterName”函数。 我觉得我存根getWriterName函数,因为我不想每次运行我testing“发布”,但我该怎么做呢? 我做了这样的事情: var sandbox = sinon.sandbox.create(); sandbox.stub(getWriterName).returns('done'); 但是这给了我一个错误 TypeError:尝试将未定义的属性undefined作为函数进行封装 如果我在写道上,那么我的st What怎么了? 编辑:我使用rewire,所以会喜欢解决scheme使用rewire

在NodeJS中使用Mocha和Sinon来ES6类的方法

有没有办法使用摩卡/ Sinon存根ES6类的方法? 我正在尝试这样做… sinon.stub(Factory, 'announce'); 但我只是得到以下错误… TypeError: Attempted to wrap undefined property announce as function

何时使用Meteor.methods和利用存根

使用meteor,我试图了解何时使用服务器端Meteor.methods()同时仍然保持即时UI更新。 从Andrew Scala的入门教程中 ,他声称当你想更新和修改你的数据库文档时应该使用Meteor.methods() : 这个想法是,你定义了服务器上的所有function,如修改和更新数据等危险的东西,然后让客户端调用这些function,并得到像常规函数的返回值。 客户从来没有看到实施,也不亲自修改数据。 服务器完成所有工作。 遵循这个build议,我在我的代码中实现了这个: 服务器端: Meteor.methods({ addMovie: function(data) { var movie = Movies.insert({name: data}); return movie; }, … 客户端: Template.movies.events = ({ 'click #add-movie': function(e) { var name = document.getElementById('movie-name').value; Meteor.call('addMovie', name); return false; }, … 这有效,但速度很慢。 如果您在客户端调用Movies.insert() ,UI将不会立即更新。 文档指出,为了纠正这个问题,你可以在客户端创build存根: 客户端调用方法定义了与同名服务器方法相关的存根函数。 如果你不想要,你不必为你的方法定义一个存根。 在这种情况下,方法调用就像其他系统中的远程过程调用一样,您将不得不等待来自服务器的结果。 但是这些存根应该是什么样的? 它应该基本上看起来像服务器端方法一样吗? 如果是这样,那有什么意义呢? 我正在寻找Meteor.methods()的用法和目的的更全面的解释,存根的使用和使用,以及它们的实现。 编辑:大卫格林斯潘已经帮助澄清Meteor.methods()和stream行谈话的存根(stub)的使用。