我正在使用puts命令在我的应用程序中打印一些自定义消息。但是,我不希望这些出现在我的测试输出中。所以,我尝试了一种方法来stubputs,如下所示。但它仍然输出我的信息。我做错了什么?stubs(:puts).returns("")#DidnotworkoutObject.stubs(:puts).returns("")#Didnotworkouteitherputs.stubs.returns""#NotworkingaswellKernel.stubs(:puts).returns""#Noluck我正在使用Test::Unit 最佳答案
我在String类中有一个调用Array实例方法“shuffle”的实例方法。为了让我使用RSpec测试该方法,我想对其进行stub。vowels=%w(aeiouy)vowels.shuffle我试过:Array.stub(:shuffle).and_return(%w(aeiouy))[].stub(:shuffle).and_return(%w(aeiouy))但都没有用:(我在这里遗漏了一些东西?也许是mock?但是我应该mock什么......谢谢。 最佳答案 使用any_instance。例如:describe"any_
我如何使用rspecstub接受两个用户输入的方法?可能吗?classMirrordefechoarr=[]print"entersomething:"arr[0]=gets.chompprint"entersomething:"arr[1]=gets.chompreturnarrendenddescribeMirrordoit"shouldecho"do@mirror=Mirror.new@mirror.stub!(:gets){"foo\n"}@mirror.stub!(:gets){"bar\n"}arr=@mirror.echo#@mirror.should_receive(:
我知道有一种方法可以让stub像这样返回多个不同的值:subject.stub(:method_call.and_return(1,2,3)但我希望这样的事情是可能的:subject.stub(:method_call).and_raise(Exception).oncesubject.stub(:method_call).and_return(1)但我还没有找到一种优雅的方式让stub仅在第一次调用时引发异常。有什么建议吗? 最佳答案 我知道的唯一方法是使用这样的计数器变量:counter=0times=2TestModel.an
在我使用test::unit的测试应用程序中,我需要首先从各种来源提取大量数据。我只想执行一次-数据只读,不写,并且不会在测试之间更改,加载(和加载错误检查)需要一些时间。有些值我每次都想重置,这些很容易,但如果我想要持久的可访问值怎么办?执行此操作的最佳方法是什么?我对可以让我将这些作业推送到可以包含在我所有测试中的某个模块的解决方案特别感兴趣,因为它们都需要访问这些数据。 最佳答案 为什么在测试中需要它?您可以将其定义为全局:gem'test-unit'#,'>=2.1.1'#startuprequire'test/unit'G
我的类(class)结构如下:classAbcONE_CLASS_LEVEL_CONSTANT_BEING_READ_FROM_DB=GloablAttributeValue.read_from_dbdefsome_method_that_use_above_constant#thisfunctionbehavesdifferentlyfordifferentvaluesofONE_CLASS_LEVEL_CONSTANT_BEING_READ_FROM_DBendend现在我想根据不同的值ONE_CLASS_LEVEL_CONSTANT_BEING_READ_FROM_DB对some
我想在引发异常的情况下对HTTParty的前两次调用stub,然后,第三次调用应该返回值。beforedoallow(HTTParty).toreceive(:get).exactly(2).times.with(url).and_raise(HTTParty::Error)allow(HTTParty).toreceive(:get).with(url).and_return('{}')end但一个允许覆盖另一个。如何设置stub以在前几次尝试时引发错误,然后让它返回一个值? 最佳答案 根据thisgithubissue中提供的信
在我的Controller规范中,我stub有效?对于一些路由测试,(基于RyanBatesnifty_scaffold)如下:-it"createactionshouldrendernewtemplatewhenmodelisinvalid"doCompany.any_instance.stubs(:valid?).returns(false)post:createresponse.shouldrender_template(:new)end当我单独测试Controller时,这很好。我的模型规范中也有以下内容it"isvalidwithvalidattributes"do@comp
我一直在成功地遵循Rails教程3,直到我到达第7章并实现了用户模型,现在我的rspec一直失败。这是我的user.rb文件输出classUsertrue,:length=>{:maximum=>50}validates:email,:presence=>true,:format=>{:with=>email_regex},:uniqueness=>{:case_sensitive=>false}validates:password,:presence=>true,:confirmation=>true,:length=>{:within=>6..40}before_save:encr
我正试图让我的头脑“弄脏”TDD,但出于某种原因,当我在命令行上运行bundleexecraketest时,没有任何反应。这是我的RakeFile:require'rake/testtask'Rake::TestTask.newdo|test|test.libs:test这是我的测试文件:require'test/unit'classTestMygem 最佳答案 我忘了将这一行添加到我的RakeFiletest.test_files=FileList['tests/test_*.rb']总而言之,这是我的最终RakeFilerequ