草庐IT

ruby - 使用 rspec 仅打印失败示例的数量

有没有办法让rspec只打印失败示例的数量而没有任何其他信息?我希望输出是这样的:Finishedin2.35seconds(filestook7.33secondstoload)1207examples,40failures,15pending谢谢 最佳答案 开箱即用的RSpec没有与您想要的输出相匹配的格式化程序。但是,可以编写自己的格式化程序。这是RSpec3+的样子RSpec::Support.require_rspec_core"formatters/base_text_formatter"classSimpleForma

ruby - 如何在 rspec 中的测试类中实例化 stub 类

我在stub外部api时遇到问题,下面是示例require'rspec'require'google/apis/storage_v1'moduleGoogleclassStoragedefuploadfileputs'#'*90puts"File#{file}isuploadedtogooglecloud"endendendclassUploadWorkerincludeSidekiq::WorkerdefperformGoogle::Storage.new.upload'test.txt'endendRSpec.describeUploadWorkerdoit'uploadstogo

ruby-on-rails - rspec 可以输出使测试失败的值吗?

我有这样的陈述:@obj[:attribute].eql?("TestValue").shouldbe_true如果它不只是告诉我测试失败,而是告诉我失败是因为@obj[:attribute]为nil或1234或其他原因,那就太好了。有什么办法吗? 最佳答案 当做类似的事情时@obj.attribute.shouldeql(5)它抛出一个错误,你通常会看到expected5got10您执行eql?是否有特定原因? 关于ruby-on-rails-rspec可以输出使测试失败的值吗?,我们

ruby-on-rails - 用于 Rails 的 RSpec 和 ActiveRecord : How to write effective tests

到目前为止,我已经构建了一个简单的Rails应用程序,其中包含三个继承自ActiveRecord的类。我在测试驱动开发方面领先了一点,因为我已经编写了需要测试的类。到目前为止,我编写的测试都进行得很顺利。对象正在创建,属性正在响应,验证都已到位。当我调用“!”时问题就开始了在我的创建方法上,因为现在对象一直被传递到数据库。而不是我的正常验证拦截无效输入,数据库似乎有机会响应刺激。到目前为止,我在运行测试时收到的错误是:ActiveRecord::记录无效:验证失败:店铺太长(最多11个字符)我很高兴收到此错误,但想知道如何在我的测试中更好地规划它。产生上述错误的代码是:it"shoul

ruby - 在 RSpec 中检查对测试替身的方法调用的参数

是否可以检查传递给方法调用参数的参数是否满足某些约束条件。我想做类似的事情my_double=double("MyObject")my_double.should_receive(:mocked_method).with{}非常感谢。编辑:我会试着澄清一点我想要完成的事情我想要的是检查一个给定的模拟方法是否被调用并传递一个满足某些条件的对象 最佳答案 备案。我想完成的可以用@test_double.should_receive(:send_mail)do|mail|mail.to.shouldeq(["john@aol.com"])

ruby - RSpec - 模拟(或 stub )覆盖的 mixin 方法

我有这样的情况:moduleSomethingdefmy_methodreturn:some_symbolendendclassMyClassincludeSomethingdefmy_methodifxxx?:other_symbolelsesuperendendend现在问题出在测试上——我想确保从覆盖方法调用super方法并将其stub,以便我可以测试方法的其他部分。我如何使用RSpec模拟来实现这一点? 最佳答案 确保super被调用听起来很像测试实现,而不是行为,并且模拟被测对象无论如何都不是一个好主意。我建议只明确指定不

ruby-on-rails - 我如何使用 Rspec 来测试使用 Paperclip 的模型是否正在验证上传文件的大小?

模型:classAttachmenttrue,:size=>{:less_than=>20.megabytes}end无效的测试:describeAttachmentdoit{shouldvalidate_presence_of:file}it{shouldvalidate_size_of:file}#validate_size_ofdoesnotexistend我想避免将20MB的文件转储到存储库中只是为了测试它。有没有一种与我上面尝试过的方法类似的方法确实有效? 最佳答案 我做到这一点的最好方法是使用内置的shouldamatc

ruby - 完成所有测试后,应使用什么 RSpec 钩子(Hook)来执行清理任务?

我在我的项目中遇到过这种情况——我有一个Singleton类代表测试期间使用的浏览器:classBrowserincludeSingletondefinitialize@browser=Watir::Browser.new:ffenddefgotourl@browser.gotourlenddefclose@browser.closeendend我想通过这个rakefile确保浏览器在测试完成后关闭:desc"defaulttesttask"task:test_alldoRake::Task[:all_rspec_tests].invokeRake::Task[:close_brows

ruby - Rspec 因自定义异常而失败

出于某种原因,我的Rspec测试是否在我期望引发异常时失败。我正在运行Rspecv2.14.1,这是一个自定义Ruby应用程序,不是Rails应用程序。示例代码:#test.rbclassTestclassBadError规范文件:#test_spec.rbrequire'spec_helper'require'test'describeTestdoit'raisesanexception'doexpect(raiseTest::BadError).toraise_exception(Test::BadError)endend结果:FFailures:1)Testraisesanexc

ruby - rspec yield block ,但调用原始

所以我有以下内容:foo.eachdo|f|f.begindo_stuffdo_more_stuffendend然后我通过调用and_yield()来模拟f对象。我希望能够通过将原始block{do_stuffdo_more_stuff}传递给begin方法来测试begin方法,而不是模拟实现....我不能只让begin方法在mock上被调用而不至少stub,所以怎么办我愿意? 最佳答案 同样,我发现了一个未记录的功能:allow(thing).toreceive(:foo)do|_,&block|block.callend叹息..