jjzjj

javascript - 为什么这个 Sinon 模拟有一个不是函数的模拟方法?

我想在我的coffeescript单元测试中使用测试替身来帮助分离关注点。我正在将sinon与mocha结合使用(在带有konacha的Rails应用程序的上下文中。)我正在尝试在这一点上似乎直接来自thedocumentation的东西,其中有这个模拟用法的例子:varmyAPI={method:function(){}};varspy=sinon.spy();varmock=sinon.mock(myAPI);mock.expects("method").once().throws();PubSub.subscribe("message",myAPI.method);PubSub.

javascript - 使用 Sinon.js 测试一个函数调用 ES6 模块中的另一个函数

我想测试ES6模块中的函数是否调用另一个使用Sinon.js的函数。这是我正在做的事情的基本布局:foo.jsexportfunctionbar(){baz();}exportfunctionbaz(){...}测试.jsimportsinonfrom'sinon';import*asFoofrom'.../foo';describe('bar',function(){it('shouldcallbaz',function(){letspy=sinon.spy(Foo,'baz');spy.callCount.should.eql(0);Foo.bar();spy.calledOnce

javascript - 在单元测试期间无法模拟 admin.firestore()

我正在阅读howtomockgooglecloudfunctionsforfirebase并有正确模拟以下代码的问题:constadmin=require('firebase-admin');admin.initializeApp(functions.config().firebase);vardb=admin.firestore();链接中的示例使用以下代码模拟initializeApp确实有效admin=require('firebase-admin');adminInitStub=sinon.stub(admin,'initializeApp');现在admin.firestor

javascript - 在 Jasmine 中每次测试后如何自动恢复所有 sinon.js spy ?

有什么方法可以找到sinon.js中所有活跃的spy吗?我希望能够做这样的事情:afterEach->sinon.restoreAllSpies()it"shouldnotcreateanewMyClass",->spy=sinon.spy(window,'MyClass')expect(spy).not.toHaveBeenCalled()目前,我需要费力地(而且容易出错!)这样做:it"shouldnotcreateanewMyClass",->spy=sinon.spy(window,'MyClass')expect(spy).not.toHaveBeenCalled()wind

javascript - 我如何测试 Sinon.js 的函数调用顺序?

如何测试Sinon.js的函数调用顺序?例如,我在对象中有三(3)个处理程序,并且想要定义处理程序调用的顺序。这有什么可能吗? 最佳答案 http://sinonjs.org/docs/sinon.assert.callOrder(spy1,spy2,...)如果提供的spy按指定顺序调用则通过。 关于javascript-我如何测试Sinon.js的函数调用顺序?,我们在StackOverflow上找到一个类似的问题: https://stackoverfl

javascript - 我如何在 Sinon 中存入一系列方法?

我知道如何使用stub来替换一个函数。sandbox.stub(Cars,"findOne",()=>{returncar1});但是现在我的函数中有一行我想测试我需要stub看起来像这样Cars.find().fetch()所以这里有一个功能链,我不确定我需要做什么。如何stub“查找”以返回可用于stub“获取”的内容? 最佳答案 恕我直言,我们可以使用returns来做到这一点。我们不需要使用callsFake或将其模拟为函数。//Cars.find().fetch()sinon.stub(Cars,'find').retur

javascript - Sinon stub 调用假参数

我之前有以下stub运行得很好sinon.stub(console,'log',()=>{//Checkwhattheargumentsholds//Andeitherconsole.infoitordonothing});例如,在其中添加console.info(arguments),会显示console.log得到的内容。使用版本2xx我切换到callsFake:sinon.stub(console,'log').callsFake(()=>{//Checkwhattheargumentsholds//Andeitherconsole.infoitordonothing});这现在

javascript - 如何使用 Sinon.js stub 事件发射器

我正在尝试对以下内容进行stub:on('complete',function(data){});我只想在第一个参数为“complete”时调用回调。我正在测试的功能还包含:on('error',function(data){});所以我不能只做yieldcause来触发完成回调和错误回调。如果我不使用sinon,我会通过编写以下内容来伪造它。varon=function(event,callback){if(event==='complete'){callback('foobar');};}; 最佳答案 您可以通过将yield与w

javascript - 如何 Stub webpack 的 require.ensure?

我使用webpack的代码拆分功能(require.ensure)以减少我的React的初始包大小通过从异步加载的单独包中加载在页面加载时不可见的组件来应用程序。这很完美,但是我在为它编写单元测试时遇到了问题。我的测试设置基于Mocha,Chai和Sinon.这是我迄今为止尝试过的代码的相关摘录:describe('WhenIrenderthecomponent',()=>{letcomponent,mySandbox;beforeEach(()=>{mySandbox=sandbox.create();mySandbox.stub(require,'ensure');componen

javascript - 已使用对象断言调用

我正在监视的函数,接收对象作为参数。我需要断言函数是用对象的某些属性调用的。例如:我的SUT有:functionkaboom(){fn({foo:'foo',bar:'bar',zap:function(){...},dap:true});}在我的测试中我可以这样做:fnStub=sinon.stub();kaboom();expect(fnStub).to.have.been.called;这有效(很高兴知道fn已被调用)。现在我需要确保将正确的对象传递给函数。我只关心foo和bar属性,即我必须为参数的特定属性设置匹配。怎么办?更新:sinon.match()似乎适用于简单的对象。