运行这段代码:_foo=MockRepository.GenerateStub();_foo.Stub(x=>x.Foo()).Return("sdf");什么时候publicinterfaceIBar{stringFoo();}publicclassBar:IBar{publicstringFoo(){thrownewNotImplementedException();}}抛出NotSupportedException-“无法创建密封类的模拟”。我理解为什么你不能模拟密封类(尽管TypeMock中有解决方案),但是模拟返回密封类(字符串)的类有什么问题?
问题是,如果对象足够复杂(在任何强类型语言中都是如此),Typescript中的模拟可能会变得棘手。你通常会模拟一些额外的东西只是为了编译代码,例如在C#中,你可以使用AutoFixture或类似的东西。另一方面,Javascript是动态语言,可以只模拟测试运行所需的对象的一部分。所以在Typescript单元测试中,我可以使用any类型声明我的依赖关系,从而轻松模拟它。您看到这种方法有什么缺点吗?letuserServiceMock:MyApp.Services.UserService={//lotsofthingtomock}对比letuserServiceMock:any={u
我想在我的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.
我想对将用户重定向到支持的社交登录url的指令进行单元测试。由于Karma不支持整页重新加载,我想改变location.hrefJavaScript对象的行为,以将它接收到的参数输出到具有特定ID的HTML元素,但我很难做到那个。指令:__app.directive('socialAuth',function(utils,authService,$location){return{restrict:'A',scope:false,link:function(scope,elem,attrs){elem.bind('click',function(){utils.cleanSocialS
我正在尝试对以下内容进行stub:on('complete',function(data){});我只想在第一个参数为“complete”时调用回调。我正在测试的功能还包含:on('error',function(data){});所以我不能只做yieldcause来触发完成回调和错误回调。如果我不使用sinon,我会通过编写以下内容来伪造它。varon=function(event,callback){if(event==='complete'){callback('foobar');};}; 最佳答案 您可以通过将yield与w
我们正在对我们的Controller进行单元测试。我们已经成功地模拟了对REST服务层的调用,并验证了它确实被给定的数据调用了。然而,现在我们想在我们的Controller中测试thenpromise的执行是否改变了location.path:Controller:(function(){app.controller('registerController',['$scope','$location','$ourRestWrapper',function($scope,$location,$ourRestWrapper){$scope.submitReg=function(){//te
假设我有一个函数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其中一
在Sinon我可以做以下事情:varmyObj={prop:'foo'};sinon.stub(myObj,'prop').get(functiongetterFn(){return'bar';});myObj.prop;//'bar'但是我怎样才能对Jest做同样的事情呢?我不能只用jest.fn()之类的东西覆盖函数,因为它不会替换getter"can'tsetthevalueofget" 最佳答案 对于遇到这个答案的其他人来说,Jest22.1.0引入了spyongetterandsettermethods的能力.编辑:如sc
我正在尝试在测试期间stub/模拟/覆盖函数调用,该函数调用将日志写入数据库。functionlogit(msg){writeMessageToDb(msg);}functiontryingToTestThisFunction(){varerror=processSomething();if(error){logit(error);}}我想要logit()在测试期间简单地打印到控制台...并在isTesting()中执行“logit()”if/elseblock功能不是一个选项。这是否可能不包括一些额外的模拟框架。我目前正在使用JsTestDriver用于单元测试并且没有机会评估任何模
这是fullminimalrepro给定以下应用:src/food.jsconstFood={carbs:"rice",veg:"greenbeans",type:"dinner"};exportdefaultFood;src/food.jsimportFoodfrom"./food";functionformatMeal(){const{carbs,veg,type}=Food;if(type==="dinner"){return`Goodevening.Dinneris${veg}and${carbs}.Yum!`;}elseif(type==="breakfast"){retur