我正在尝试使用RSPEC测试我的APIController。Controller中的操作有一个我想stub/模拟的服务。但是我得到了错误:Failure/Error:expect(Api::V1::PaymentsController).toreceive(:init_alias).and_return(svc)Api::V1::PaymentsControllerdoesnotimplement:init_alias这是我的测试:let(:alias_svc){instance_double(AliasService)}describe'POST/payment/card'doit'
我一直在寻找可以解释我遇到的问题的东西。我可能遗漏了一些简单的东西,所以我希望有人能发现我的错误。Rails.application.routes.drawdoget'auth/:provider/callback',to:'sessions#create',as:'login'get'auth/failure',to:redirect('/')get'signout',to:'sessions#destroy',as:'signout'resources:sessions,only:[:create,:destroy]resources:home,only:[:show]resour
我在下面创建了RSpec测试。我尝试多次调用subject。但我得不到预期的结果。我调用了subject三次,不是吗?所以,我期待三本书的记录。subject不能调用一次吗?require'rails_helper'RSpec.describeBook,type::modeldocontext'somecontext'dosubject{Book.create}beforedosubjectendit'somethinghappen'dosubjectexpect{subject}.tochange{Book.count}.from(0).to(3)endendend
在我的RSpec测试中,我使用let()语法定义了多个方法。我遇到过这样一种情况,我需要将let语句中定义的变量用于同一个describeblock中的另一个let语句。context'Reusethenameoffirstcarinthesecondcar'doit_behaves_like'somecartest'dolet(:car1)do{name1:"#{testcase['Car']}_#{Time.now.round}",car_model:testcase['Toyota']}endlet(:car2)do{name2:name1}endendend如您所见,我想使用我
这在一台装有Ruby的机器上有效,但在另一台机器上无效。代码:describe'testingreversestringdifferentways'dolet:thing{'cba321'}it'thesystemmethod'dosource='123abc'result=source.reverseexpect(result).toeq'cba321'endend错误:SyntaxError:/home/michael/Dropbox/90_2019/work/code/ruby__rails/ruby/reverse_string_tests_timing/test_spec.r
我是一个完整的Ruby新手,正在玩rspec我正在测试一个包含这一行的类(帐户):attr_reader:balance当我尝试用这种方法测试它时:it"shoulddeposittwice"do@acc.deposit(75)expect{@acc.deposit(50)}.tochange(Account.balance).to(125)end我收到这个错误:NoMethodErrorin'Accountshoulddeposittwice'undefinedmethod`balance'forAccount:Class我不明白为什么我会收到错误,因为存在属性“balance”,但
我想开始使用RSpec为我的Rails应用程序编写测试,但我有很多现有的测试是使用Test::Unit编写的。我想继续能够简单地从命令行运行所有测试(或所有单元测试、功能测试等),比如raketest:units或其他任何东西,并让它运行所有单元测试,无论它们是用Test::Unit还是RSpec编写的。而且我绝对不想浪费大量时间将我现有的测试转换为RSpec;那是不可能的。现在我在想,我希望我的RSpec测试与我现有的测试一起存在,在测试/单元、测试/功能等方面。实现这一目标的最佳方法是什么?或者这甚至是一个好主意?也就是说,我对RSpec(以及Ruby和Rails,就此而言)还很陌
这几天我一直在尝试这样做,但我无法弄清楚。我的Controller中有以下代码:@some_object=@current_user.some_method在我的规范中,我想在那个方法上附加一个should_receiveHook,但我无法让它工作。我已经尝试了所有这些,但都没有用:assigns[:current_user].should_receive(:some_method).at_least(:once)#expected1,got0User.should_receive(:some_method).at_least(:once)#expected1,got0正确的测试方法是
我是RSpec的新手,我正在尝试运行“should==A||B”,但它忽略了'B'并且只与'A'进行比较(因此当val为'B'):Sample.find(:all).map(&:param).each{|val|val.should=='A'||'B'}有谁知道我如何在比较中包含“B”? 最佳答案 ['A','B'].shouldinclude(val)这可能会让您的规范通过,但这是您想要测试的吗?返回值是集合的成员吗?如果是这样,那么这也许是一个很好的解决方案。 关于ruby-on-r
我想使用RSpec测试某个方法是否在方法内被调用。采用以下示例类:classUpload当在file_name='foo.html'的上传实例上调用process时,我如何测试to_pdf被调用?如果可能的话,我想使用测试替身来做到这一点。 最佳答案 instance=Upload.newinstance.file_name="foo.html"instance.should_receive(:to_pdf)instance.process 关于ruby-如何用RSpec测试这个?,我们