有什么方法可以找到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
如何测试Sinon.js的函数调用顺序?例如,我在对象中有三(3)个处理程序,并且想要定义处理程序调用的顺序。这有什么可能吗? 最佳答案 http://sinonjs.org/docs/sinon.assert.callOrder(spy1,spy2,...)如果提供的spy按指定顺序调用则通过。 关于javascript-我如何测试Sinon.js的函数调用顺序?,我们在StackOverflow上找到一个类似的问题: https://stackoverfl
我知道如何使用stub来替换一个函数。sandbox.stub(Cars,"findOne",()=>{returncar1});但是现在我的函数中有一行我想测试我需要stub看起来像这样Cars.find().fetch()所以这里有一个功能链,我不确定我需要做什么。如何stub“查找”以返回可用于stub“获取”的内容? 最佳答案 恕我直言,我们可以使用returns来做到这一点。我们不需要使用callsFake或将其模拟为函数。//Cars.find().fetch()sinon.stub(Cars,'find').retur
我之前有以下stub运行得很好sinon.stub(console,'log',()=>{//Checkwhattheargumentsholds//Andeitherconsole.infoitordonothing});例如,在其中添加console.info(arguments),会显示console.log得到的内容。使用版本2xx我切换到callsFake:sinon.stub(console,'log').callsFake(()=>{//Checkwhattheargumentsholds//Andeitherconsole.infoitordonothing});这现在
我正在尝试对以下内容进行stub:on('complete',function(data){});我只想在第一个参数为“complete”时调用回调。我正在测试的功能还包含:on('error',function(data){});所以我不能只做yieldcause来触发完成回调和错误回调。如果我不使用sinon,我会通过编写以下内容来伪造它。varon=function(event,callback){if(event==='complete'){callback('foobar');};}; 最佳答案 您可以通过将yield与w
我正在使用Express,我正在寻找一种方便的方法来转换这种对象(根据请求req.body.myObject):{"name":"Foo","someNumber":"23","someBoolean":"on"}进入此架构的实例:varmyObjectSchema=newSchema({name:String,someNumber:Number,someBoolean:Boolean});请注意,第一个对象来自请求,因此它完全由字符串创建。有什么好的方法可以做到这一点吗?如果没有,您对如何将此功能实现为中间件有什么建议吗??? 最佳答案
我正在使用mongoDB和mongoose开发一个expressjsAPI。我想在Javascriptes6中创建一个由几个变量和Mongoose请求的结果组成的对象,并希望使用es6传播运算符来实现:MyModel.findOne({_id:id},(error,result)=>{if(!error){constnewObject={...result,toto:"toto"};}});问题在于将扩展运算符应用于结果以一种奇怪的方式转换它:newObject:{$__:{$options:true,activePaths:{...},emitter:{...},getters:{.
下面的代码有效,它更新记录或创建记录(如果尚不存在)。但是,我想将此findOneAndUpdate()语句与populate()方法结合起来,以填充我的对象的“用户”。将populate("user")语句添加到此逻辑的正确方法是什么?我尝试在findOneAndUpdate完成后添加populate()方法,但返回一个错误,指出此方法不存在。我正在运行最新版本的Mongoose。LoyaltyCard.findOneAndUpdate({business:businessid},{$set:newCard,$inc:{stamps:+1}},{upsert:true},functi
假设我有一个函数Funca(){//DoSomethingletc=b();returnc;}我想测试函数a和模拟b()并且在模拟中想要分配c。Sinon.Stub(Test,"b").returns("DummyValue");c应分配DummyValue。我该怎么做?describe("a",()=>{leta=a();//mockb();action=execute(a);expect(action).should.return.("DummyValue");}) 最佳答案 当我们在同一个文件中有2个函数并且想要stub其中一
我有一个1秒的jQuery.animateAction,它在页面加载后5秒启动。我在我的Jasmine单元测试代码中设置了一个Sinon计时器,并在7秒后进行测试,以查看后动画属性是否符合预期。它不能正常工作,所以我在我的JasmineHTML测试页面上放置了一个动画实例,以便更好地查看发生了什么。在Firefox和Chrome中,页面加载,动画函数被调用,单元测试立即失败,然后(也是立即)动画可见。在IE、Opera和Safari中,页面加载,动画函数被调用,单元测试立即失败,动画永远不会出现。我希望的是以下内容(在所有浏览器中):页面加载,调用动画函数,动画瞬间完成,单元测试立即成