我正在构建一个测试套件来教授OOP。我希望我的spec/lib文件夹中的文件按特定顺序执行。我想定义一个类名数组,它们的测试套件将按顺序执行。例如:spec_order=%w(FirstClassSecondClassThirdClass)我怎样才能做到这一点? 最佳答案 用数字命名_spec.rb文件:01_first_spec.rb02_second_spec.rb...创建一个.rspec文件#.rspec--orderdefined现在,当运行rspec时,文件应该按排序顺序执行。
我正在测试我的sessionController,但出现此错误,登录功能有效,我在浏览器上对其进行了测试,但我是Rspec测试的新手,无法使其正常工作Failure/Error:expect(response.session[:user_id]).toeq(@user_attr.id)NoMethodError:undefinedmethod`session'for##./spec/controllers/sessions_controller_spec.rb:20:in`block(3levels)in'这是我的Controller的代码:defnew@user=User.newen
有没有办法让rspec只打印失败示例的数量而没有任何其他信息?我希望输出是这样的:Finishedin2.35seconds(filestook7.33secondstoload)1207examples,40failures,15pending谢谢 最佳答案 开箱即用的RSpec没有与您想要的输出相匹配的格式化程序。但是,可以编写自己的格式化程序。这是RSpec3+的样子RSpec::Support.require_rspec_core"formatters/base_text_formatter"classSimpleForma
我在stub外部api时遇到问题,下面是示例require'rspec'require'google/apis/storage_v1'moduleGoogleclassStoragedefuploadfileputs'#'*90puts"File#{file}isuploadedtogooglecloud"endendendclassUploadWorkerincludeSidekiq::WorkerdefperformGoogle::Storage.new.upload'test.txt'endendRSpec.describeUploadWorkerdoit'uploadstogo
我有这样的陈述:@obj[:attribute].eql?("TestValue").shouldbe_true如果它不只是告诉我测试失败,而是告诉我失败是因为@obj[:attribute]为nil或1234或其他原因,那就太好了。有什么办法吗? 最佳答案 当做类似的事情时@obj.attribute.shouldeql(5)它抛出一个错误,你通常会看到expected5got10您执行eql?是否有特定原因? 关于ruby-on-rails-rspec可以输出使测试失败的值吗?,我们
到目前为止,我已经构建了一个简单的Rails应用程序,其中包含三个继承自ActiveRecord的类。我在测试驱动开发方面领先了一点,因为我已经编写了需要测试的类。到目前为止,我编写的测试都进行得很顺利。对象正在创建,属性正在响应,验证都已到位。当我调用“!”时问题就开始了在我的创建方法上,因为现在对象一直被传递到数据库。而不是我的正常验证拦截无效输入,数据库似乎有机会响应刺激。到目前为止,我在运行测试时收到的错误是:ActiveRecord::记录无效:验证失败:店铺太长(最多11个字符)我很高兴收到此错误,但想知道如何在我的测试中更好地规划它。产生上述错误的代码是:it"shoul
是否可以检查传递给方法调用参数的参数是否满足某些约束条件。我想做类似的事情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"])
我有这样的情况:moduleSomethingdefmy_methodreturn:some_symbolendendclassMyClassincludeSomethingdefmy_methodifxxx?:other_symbolelsesuperendendend现在问题出在测试上——我想确保从覆盖方法调用super方法并将其stub,以便我可以测试方法的其他部分。我如何使用RSpec模拟来实现这一点? 最佳答案 确保super被调用听起来很像测试实现,而不是行为,并且模拟被测对象无论如何都不是一个好主意。我建议只明确指定不
模型:classAttachmenttrue,:size=>{:less_than=>20.megabytes}end无效的测试:describeAttachmentdoit{shouldvalidate_presence_of:file}it{shouldvalidate_size_of:file}#validate_size_ofdoesnotexistend我想避免将20MB的文件转储到存储库中只是为了测试它。有没有一种与我上面尝试过的方法类似的方法确实有效? 最佳答案 我做到这一点的最好方法是使用内置的shouldamatc
我在我的项目中遇到过这种情况——我有一个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