草庐IT

sinon-chai

全部标签

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 - 诸如 Chai 之类的断言库如何在不强制调用函数的情况下工作?

在Chai,您可以执行以下操作:expect({}).to.exist;exist不是函数调用,但这在测试框架中仍然有效。相反的(expect({}).to.not.exist)会导致测试失败,但同样,exist不是函数调用。在不让我调用函数的情况下,这些断言如何工作?事实上,如果我尝试说expect({}).to.exist()测试失败,因为exist不是一个函数。 最佳答案 我想出来了(或者至少,我想出了一个方法)。使用JavaScriptgetters:varthrows={geta(){thrownewError('a');

javascript - Mocha/Chai 异步测试 'done()' fn 不工作

我正在测试我拥有的银行模型,如下所示:describe('BankModel-Ajax',function(){it('loadsbank',function(done){varbank=newBank();bank.OnLoaded=_(function(){expect(this.id).to.eql(1171);expect(true).to.eql(false);done();}).bind(bank);bank.load(1171);});});加载调用向我的服务器发出ajax请求。我的问题是expect(true).to.eql(false);抛出一个UncaughtAss

javascript - 使用 Mocha 和 Chai-as-Promised 测试被拒绝 promise 的特定属性

我正在尝试使用Chai-as-Promised测试被拒绝的Promise的细节,Mocha,和“应该”方言。promise由bluebird实现.这很好用:it('itshouldberejectedwhengivenbadcredentials',function(){varpromiseOfUsers=db.auth("bad","credentials").getUsers();returnpromiseOfUsers.should.eventually.be.rejectedWith(Error)});该错误有一个“状态”属性。我想断言状态是401这不起作用:it('itsho

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()似乎适用于简单的对象。

javascript - chai expect 函数是如何工作的?

从chai的api你有这样的代码:.existAssertsthatthetargetisneithernullnorundefined.varfoo='hi',bar=null,baz;expect(foo).to.exist;expect(bar).to.not.exist;expect(baz).to.not.exist;存在部分如何工作?expect函数返回一个对象,然后对“to”对象进行简单的属性查找。那只是一个属性评估,不是吗?唯一对我有意义的是exist属性是否是getter方法。怎么了? 最佳答案 chai公开了一个

javascript - 如何使用 sinon 在另一个函数(我正在测试)中模拟一个函数?

假设我有一个函数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其中一

javascript - 如何在 Jasmine 单元测试中使用 Sinon 模拟 jQuery 动画?

我有一个1秒的jQuery.animateAction,它在页面加载后5秒启动。我在我的Jasmine单元测试代码中设置了一个Sinon计时器,并在7秒后进行测试,以查看后动画属性是否符合预期。它不能正常工作,所以我在我的JasmineHTML测试页面上放置了一个动画实例,以便更好地查看发生了什么。在Firefox和Chrome中,页面加载,动画函数被调用,单元测试立即失败,然后(也是立即)动画可见。在IE、Opera和Safari中,页面加载,动画函数被调用,单元测试立即失败,动画永远不会出现。我希望的是以下内容(在所有浏览器中):页面加载,调用动画函数,动画瞬间完成,单元测试立即成

javascript - Chai .js : Object contains/includes

Chai有一个include方法。我想测试一个对象是否包含另一个对象。例如:varorigin={name:"John",otherObj:{title:"Example"}}我想使用Chai来测试这个对象是否包含以下内容(它确实包含)varmatch={otherObj:{title:"Example"}}这样做似乎不起作用:origin.should.include(match) 最佳答案 嘿,刚刚发布了chai-subset。检查一下:https://www.npmjs.org/package/chai-subset这应该适合