Tag: sinon

把整个class级用sintesting

序言:我读过很多关于SO和博客的文章,但还没有看到任何回答这个问题的东西。 也许我只是在寻找错误的东西… 假设我正在开发一个将在Widget对象上运行的WidgetManager类。 如何使用sinon来testingWidgetManager是否正确使用Widget API,而无需拉动整个Widget库? 基本原理:WidgetManager的testing应该从Widget类中分离出来。 也许我还没有写Widget,或者Widget是一个外部库。 无论哪种方式,我应该能够testingWidgetManager是正确使用Widget的API,而无需创build真正的Widgets。 我知道sinon mocks只能在现有的类上工作,而且据我所知,sinon stubs也需要这个类存在,才能被截断。 为了使其具体,我将如何testingWidget.create()正在调用一个参数名称在下面的代码一次? 代码正在testing中 // file: widget-manager.js function WidgetManager() { this.widgets = [] } WidgetManager.prototype.addWidget = function(name) { this.widgets.push(Widget.create(name)); } testing代码 // file: widget-manager-test.js var WidgetManager = require('../lib/widget-manager.js') var sinon = require('sinon'); describe('WidgetManager', function() { describe('#addWidget', function() { it('should call Widget.create with the correct name', function() […]

嘲笑/ st Mong模式保存方法

给定一个简单的mongoose模型: import mongoose, { Schema } from 'mongoose'; const PostSchema = Schema({ title: { type: String }, postDate: { type: Date, default: Date.now } }, { timestamps: true }); const Post = mongoose.model('Post', PostSchema); export default Post; 我想testing这个模型,但是我遇到了一些障碍。 我目前的规格看起来像这样(为了简洁,省略了一些东西): import mongoose from 'mongoose'; import { expect } from 'chai'; import { Post } from '../../app/models'; […]

Sinon错误尝试包装已包装的function

虽然这里有同样的问题,但我找不到我的问题的答案,所以这里是我的问题: 我正在testing我的节点js应用程序使用摩卡和柴。 我正在用sinion包装我的function。 describe('App Functions', function(){ let mockObj = sinon.stub(testApp, 'getObj', (dbUrl) => { //some stuff }); it('get results',function(done) { testApp.someFun }); } describe('App Errors', function(){ let mockObj = sinon.stub(testApp, 'getObj', (dbUrl) => { //some stuff }); it('throws errors',function(done) { testApp.someFun }); } 当我尝试运行这个testing时,它给了我错误 Attempted to wrap getDbObj which is already wrapped 我也试过放 beforeEach(function () […]

嘲笑与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(); […]

如何在node.js中存储process.env?

我想用“bar”存根process.env.FOO。 var sinon = require('sinon'); var stub = sinon.stub(process.env, 'FOO', 'bar'); 我很困惑。 我读了文件,但还是不明白。 sinonjs文档 sinonjs是一个例子,不sinonjs是好的。

用Sinon.js保存一个类的方法

我正在尝试使用sinon.js存根方法,但是我得到以下错误: Uncaught TypeError: Attempted to wrap undefined property sample_pressure as function 我也去了这个问题( 在sinon.js中对stubbing和/或嘲笑类 ),并复制粘贴代码,但我得到了同样的错误。 这是我的代码: Sensor = (function() { // A simple Sensor class // Constructor function Sensor(pressure) { this.pressure = pressure; } Sensor.prototype.sample_pressure = function() { return this.pressure; }; return Sensor; })(); // Doesn't work var stub_sens = sinon.stub(Sensor, "sample_pressure").returns(0); // Doesn't work var […]