在过去的几个月里,我一直在使用JavaScript并使用SinonJS来stub一些行为。我已经设法让它发挥作用,我使用了很多方法,一切都很好。但对于诗浓在幕后的运作方式,我还是有些疑问。我想我说的是Sinon,但这个问题可能适用于所有其他旨在模拟/stub/spy的库。过去几年我使用最多的语言是Java。在Java中,我使用Mockito来模拟/stub依赖项和依赖项注入(inject)。我曾经导入类,用@Mock注释字段并将此模拟作为参数传递给被测类。我很容易看出我在做什么:模拟一个类并将模拟作为参数传递。当我第一次开始使用SinonJS时,我看到了这样的东西:moduleUnde
我正在尝试使用chai-as-promised库测试返回promise的函数。我promise的结果是一个具有嵌套属性的对象。是否可以测试深层嵌套属性的值。例如functionmyFunc(){returnnewPromise((resolve,reject)=>{constdata={thing:{foo:'bar',baz:'lah'}}resolve(data)})}如何在不检查整个对象的情况下测试foo属性是否等于“bar”?我试过这样的事情:expect(myFunc()).to.eventually.have.property('thing.foo','bar')但是没有运
在下面的单元测试代码中:TestModel=Backbone.Model.extend({defaults:{'selection':null},initialize:function(){this.on('change:selection',this.doSomething);},doSomething:function(){console.log("Somethinghasbeendone.");}});module("Test",{setup:function(){this.testModel=newTestModel();}});test("intra-modeleventbi
我使用Mocha进行单元测试,使用Chai进行断言。我想找到一种易于使用的解决方案来检查对象是否具有我的比较对象中定义的结构和属性。但我不需要对象完全相等。被测对象至少应该包含我的测试对象中的所有属性,但它也可能包含当时未被测试的其他属性。所以,我想测试一个单元来检查它返回的对象是否至少有一个名为“foo”的属性,它本身是一个至少包含值为10的属性“bar”的对象。所以,我有要测试的预期结果:varexpected={foo:{bar:10}};我调用我的单元并将我的测试对象放在变量sut中:varsut=MyUnit.myFunction();所以对于各种suts,我期望这些结果:/
我正在尝试使用sinonstub来替换可能需要时间的函数。但是当我运行测试时,测试代码似乎没有使用sinonstub。这是我要测试的代码。functiontakeTooLong(){returnreturnSomething();}functionreturnSomething(){returnnewPromise((resolve)=>{setTimeout(()=>{resolve('ok')},1500)})}module.exports={takeTooLong,returnSomething}这是测试代码。constchai=require('chai')chai.use(r
Chai,matchers是否与rspecs=~等价(这意味着包含所有元素,但顺序无关紧要。传递示例[1,2,3].should=~[2,1,3]失败[1,2,3].should=~[1,2] 最佳答案 您可以使用最新版Chai中提供的members测试:expect([4,2]).to.have.members([2,4]);expect([5,2]).to.not.have.members([5,2,1]); 关于javascript-等同于rspec=~对于Chai中的数组,我们在
我正在尝试在typescript中使用chai。Chai的javascript示例显示为:varshould=require('chai').should();我下载了类型定义:tsdinstallchai...引用文件,尝试导入///importshould=require('chai').should();我得到:errorTS1005:';'expected...知道怎么做吗? 最佳答案 import{should}from'chai';should(); 关于javascript
如何使用sinon模拟调用回调的外部方法?给定以下代码的示例,getText应在回调函数中返回'astring'作为响应sinon.stub(a,'getText').returns('astring')letcb=function(err,response){console.log(response)}a.getText('abc',cb)它应该产生输出'astring'因为它调用回调函数cb但是没有输出 最佳答案 sinon.stub(a,'getText').yields(null,'astring');yields()将使用
我有以下通过promise递归运行的队列消费者类:"usestrict";varqueue=require("./queue"),helpers=require("./helpers"),vendors=require("../config/vendors"),queueConf=require("../config/queue");functionConsumer(){this.queue=newqueue.TaskQueue();this.currentItem=null;this.port=null;this.payload=null;}Consumer.prototype.pa
是否有简单的方法来模拟hapi回复对象/函数以便于进行单元测试?我看到的hapi示例都使用server.inject和“实验室”框架进行测试。我很想知道如何继续使用mocha,并希望直接测试Controller而不是注入(inject)服务器。我应该使用sinon来模拟回复对象吗?测试/post.jsbefore(function(){PostController=proxyquire('../controllers/post',{'mongoose':mongooseMock});});it('shouldbeabletocreateapost',function(done){var