草庐IT

ruby-on-rails - 用于测试服务对象的 Rspec 建议

我正在为涉及多个模型的服务对象编写Rspec测试,但我觉得我的测试过于依赖方法的内部结构,因此意义不大。这是一个例子:classMealServicerdefself.serve_meal(meal,customer)meal.update_attributes(status:"served",customer_id:customer.id)order=customer.orderOrderServicer.add_meal_to_order(meal,order)CRM.update_customer_record(customer)//externalAPIcallendend我想

ruby - 在 webmock 中对同一个端点的多次调用具有不同的结果?

我有一些看起来像这样的代码:whileresponse.droplet.status!=env["user_droplet_desired_state"]dosleep2response=ocean.droplet.showenv["droplet_id"]say".",nil,falseend想法是您可以将应用程序设置为等到服务器处于特定状态(例如,重新启动它,然后观察它直到它再次处于事件状态)但是,我在测试中使用的是webmock,我想不出一种方法来第二次给出不同的响应。例如,代码如下:stub_request(:get,"https://api.digitalocean.com/

ruby-on-rails - Rspec.config 之前(:each) except for specific :types

我正在尝试获取一个before(:each)block以针对所有规范excepttype::feature运行。我让它工作的唯一方法是剪切和粘贴,并为每种类型设置单独的配置block。(:type=>:model,:type=>:service等)spec/rails_helper.rb#Tospeeduptests,stuballPaperclipsavingandreadingto/fromS3config.before(:each,:type=>:model)doallow_any_instance_of(Paperclip::Attachment).toreceive(:sav

ruby-on-rails - 使用 Rspec stub 链式方法

我想调用一个只会返回一条记录的named_scope,但named_scope会返回一个数组,这没什么大不了的,因为我可以将它与.first链接起来:Model.named_scope(param).first这行得通,我正在努力解决的问题是如何对链接的调用进行stub。有没有人对我如何使用Rspec模拟实现这一点有引用或答案? 最佳答案 我想通了。Client.stub!(:named_scope).and_return(@clients=mock([Client]))@clients.stub!(:first).and_retu

ruby - 关于 Ruby 1.9.x 的测试框架是否达成共识?

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭8年前。Improvethisquestion一个包含快速介绍的二人组。简介:我从Perl转向Ruby,我对测试框架的选择有点迷茫。我知道可能没有单一的、全面的最佳选择,但我什至无法清楚地了解竞争环境。那么,首先,MiniTest还是Test::Unit?我刚刚意识到1.9.1现在默认为MiniTest。我没有注意到,因为所有旧的Test::Unit教程仍然可以正常工作。如果您需要测试/单元,您实际上会得到MiniTest作为Test

ruby - 如何将模块混合到 rspec 上下文中

如何将模块混合到rspec上下文(也称为describe),以便模块的常量可用于规范?moduleFooFOO=1enddescribe'constantsinrspec'doincludeFoopconst_get(:FOO)#=>1pFOO#uninitializedconstantFOO(NameError)endconst_get可以在常量名称不能检索常量的情况下检索常量,这很有趣。是什么导致了rspec的奇怪行为?我正在使用MRI1.9.1和rspec2.8.0。症状同MRI1.8.7。 最佳答案 你想要extend,而不

ruby Rspec。获取所有测试的列表

我在Rspec上做了一些测试,看起来像这样:describe"description"dobefore:eachdodo_before()endit"something_1"do...endit"something_2"do...endend我知道我可以使用获取当前测试的名称(“something_1”)example.description有什么方法可以获取before:each区域中所有描述的数组吗? 最佳答案 rspec-fd--color--dry-runfilename在rspec3.5.2中为我工作,列出所有测试而不运行

ruby - 在 Ruby 中测试标准输入

我目前正在尝试测试一种基本方法,该方法从用户那里接收一些输入(gets)并将其输出(puts)。经过一番研究后,我发现了一种测试标准输出流的好方法,如下所示:defcapture_standard_output(&block)original_stream=$stdout$stdout=mock=StringIO.newyieldmock.string.chompensure$stdout=original_streamend我正在测试的方法是下面的方法,输出和输入指的是我在开始时初始化的ivars,并指向等效的$stdout和$stdin:defask_for_markouput.p

ruby - 在 RSpec 测试中模拟 ActiveRecord 关系行为

我在测试时遇到过这个问题。假设我有两个模型,User和Post,其中userhas_many:posts。我正在尝试指定包含如下内容的代码块:user=User.find(123)post=user.posts.find(456)我知道如何模拟User.find和user.posts部分。user.posts模拟返回一个Post对象数组。当它到达.find(456)部分时,一切都崩溃了,并出现noblockgiven异常。所以我的问题是:作为user.postsmock的结果我要返回什么,以便.find(456)方法对其起作用?User.first.posts.class说它是Arra

ruby - 使用 JRuby 或 bundle exec 时如何使用 rspec 启用颜色?

我正在尝试使用JRuby运行我的rspec:rakespec结果是:jruby-Sbundleexecrspec--colorspec/foo_spec.rb没有颜色出现,所以我从等式中删除了Jruby:bundleexecrspec--colorspec/foo_spec.rb没有颜色。如何将“--color”选项传递给rspec?我的项目的根目录中还有一个.rspec文件,在这些情况下似乎没有帮助。然而,.rspec文件在我刚刚运行时被拾取或使用:rspecspec/foo_spec.rb有什么想法吗? 最佳答案 将--tty添