草庐IT

rspec-mocks

全部标签

ruby-on-rails - 如何使用 Rspec 测试电子邮件发送?

使用rspec和Rails测试电子邮件发送的最佳实践和工具是什么?例如,我如何测试电子邮件是否已发送或我应该测试什么才能进行有效测试和可接受的覆盖范围。如果你们需要一个例子,我将如何去测试它:classUserMailer 最佳答案 email-spec看起来是个不错的库http://github.com/bmabey/email-spec 关于ruby-on-rails-如何使用Rspec测试电子邮件发送?,我们在StackOverflow上找到一个类似的问题:

ruby - Rspec `eq` 与 `eql` 测试中的 `expect`

在rspec测试中使用eq和eql有什么区别?有区别吗:it"addsthecorrectinformationtoentries"do#book=AddressBook.new#=>Replacedbyline4book.add_entry('AdaLovelace','010.012.1815','augusta.king@lovelace.com')new_entry=book.entries[0]expect(new_entry.name).toeq('AdaLovelace')expect(new_entry.phone_number).toeq('010.012.1815'

ruby - 我应该使用 RSpec 测试私有(private)方法吗?

为私有(private)方法编写测试是好的做法吗?考虑以下简单示例:classGrouphas_many:membersprivatedefrelease_membersmembers.each{|member|member.update_attributesgroup_id:nil}endend在RSpec中为release_members方法编写测试是否是一个好习惯?我相信您必须编写测试,即使用send调用该方法。group.send(:release_members)有时不受欢迎。 最佳答案 您不应该测试私有(private)

ruby-on-rails - 从 before(:each) block) 中获取完整的 RSpec 测试名称

RSpec允许您通过执行以下操作在before(:each)block中获取当前运行的测试方法名称:Spec::Runner.configuredo|config|config.before:eachdo|x|x.method_name#returns'shouldbecool'endend这是为了这样的测试:requireFile.expand_path(File.dirname(__FILE__)+'/../spec_helper')describe'Helloworld'doit'shouldbecool'do#testcodeendend是否有可能在beforeblock中获得

ruby - rspec 失败错误 : expected false to respond to `false?`

我正在运行这部分测试:describeDictionarydobeforedo@d=Dictionary.newendit'cancheckwhetheragivenkeywordexists'do@d.include?('fish').shouldbe_falseend使用这段代码:classDictionarydefinitialize@hash={}enddefadd(new_entry)new_entry.class==String?@hash[new_entry]=nil:new_entry.each{|noun,definition|@hash[noun]=definiti

ruby-on-rails - 我如何在我的 RSpec 中设置 request.referrer?

我试图避免使用我的session[:referred_by],而想使用request.referrer。但是,我的RSpec测试失败了,因为TestRequest没有存储request.referrer因此,为了使Rspec测试正常工作,我必须执行以下操作。有没有办法让它变得更好:referrer=request.referrer?request.referrer:'/'redirect_toreferrer,:alert=>error_message 最佳答案 ActionDispatch::TestRequest扩展了Actio

ruby-on-rails - 在 RSpec 单元测试中模拟竞争条件

我们有一个异步任务,它为一个对象执行一个可能长时间运行的计算。然后将结果缓存在对象上。为了防止多个任务重复相同的工作,我们添加了带有原子SQL更新的锁定:UPDATEobjectsSETlocked=1WHEREid=1234ANDlocked=0加锁只针对异步任务。对象本身仍可由用户更新。如果发生这种情况,旧版本对象的任何未完成任务都应丢弃其结果,因为它们可能已过时。使用原子SQL更新也很容易做到这一点:UPDATEobjectsSETresults='...'WHEREid=1234ANDversion=1如果对象已更新,其版本将不匹配,因此结果将被丢弃。这两个原子更新应该处理任何

ruby - 如何在 rspec 测试中包含 lib 目录

我在JRuby1.7.4上测试包含lib目录的gem时遇到问题。我想测试位于lib/vger/resources/account_manager.rb的文件我的规范文件在spec/vger/resources/account_manager_spec.rbrequire'spec_helper'describeVger::Resources::AccountManagerdo..endend我正在尝试将要测试的文件包含在spec_helper.rb中require'rubygems'require'bundler/setup'require'vger/resources/account

ruby - 如何优雅地检查 RSpec 中记录的存在

有没有更好的方法来检查RSpec中是否存在记录?Foo.where(bar:1,baz:2).count.should==1 最佳答案 与Rspec2.13.0,我能够做到Foo.where(bar:1,baz:2).shouldexist编辑:Rspec现在有anexpectsyntax:expect(Foo.where(bar:1,bax:2)).toexist 关于ruby-如何优雅地检查RSpec中记录的存在,我们在StackOverflow上找到一个类似的问题:

ruby - 有没有办法用 Rspec stub 包含模块的方法?

我有一个模块包含在另一个模块中,它们都实现了相同的方法。我想stub包含模块的方法,如下所示:moduleMdeffoo:MendendmoduleAclass第一个测试通过,但第二个输出:Failure/Error:expect(A.foo).toeq:barexpected::bargot::M为什么stub在这种情况下不起作用?有没有不同的方法来实现这一目标?谢谢!------------------------------------更新----------------------------------谢谢!使用allow_any_instance_of(M)解决了这个问题。