草庐IT

ruby-on-rails - rspec 路由测试和主机

我看到我可以像这样用rspec测试路由:get("/").shouldroute_to("welcome#index")但我有基于主机名或部分主机名的约束,并在多个主机名之间重定向。测试时如何指定主机名?如何使用正确的配置运行测试?我尝试打印root_url并得到:Missinghosttolinkto!Pleaseprovidethe:hostparameter,setdefault_url_options[:host],orset:only_pathtotrue 最佳答案 同样的错误发生在我每次运行rspecspec/整个错误实

ruby-on-rails - 哪里用 `FactoryGirl.build_stubbed` 哪里用RSpec的 `mock`/`double`

我很好奇人们在编写RSpec规范时倾向于在哪里使用FactoryGirl.build_stubbed以及他们在哪里使用double。也就是说,是否有最佳实践,例如“仅在相应的模型规范中使用FactoryGirl方法?”当您发现自己在spec/models/bar_spec.rb中使用FactoryGirl.create(:foo)时,是否有代码味道?如果您在spec/models/bar_spec.rb中使用FactoryGirl.build_stubbed(:foo),代码味道会不会变小?如果您在foos_controller_spec.rb中使用FactoryGirl.create

ruby-on-rails - capybara 在功能规范期间找不到数据库记录

我有一个JS功能规范,我正在尝试使用CapybaraWebkit运行。但是它似乎无法找到我的数据库记录。有问题的规范看起来像这样it"shouldallowpledgingtoaHardbacklevel",js:truedobook=FactoryGirl.create:bookvisitbook_path(book)click_link"pledge-btn"end很遗憾,请求book_path(book)404s因为找不到这本书。如果我取消:js标志,测试通过。我已将DatabaseCleaner设置为使用:truncation用于JS规范asistherecommendedme

ruby - 如何清除 ruby​​ 中 rspec 测试之间的类变量

我有以下类(class):我想确保类url只为所有实例设置一次。classDataFactory@@url=nildefinitialize()beginif@@url.nil?Rails.logger.debug"Settingurl"@@url=MY_CONFIG["myvalue"]endrescueExceptionraiseDataFactoryError,"Error!"endendend我有两个测试:it"shouldlogamessage"doAPP_CONFIG={"myvalue"=>"test"}Rails.stub(:logger).and_return(log

ruby-on-rails - 如何在 rspec 功能测试中访问(设计)current_user?

在设计文档中,他们提供了有关在测试Controller时如何访问current_user的提示:https://github.com/plataformatec/devise/wiki/How-To:-Test-controllers-with-Rails-3-and-4-%28and-RSpec%29但是,在进行功能测试时呢?我正在尝试测试我的一个Controller的创建方法,并且在该Controller中使用了current_user变量。问题是devise中建议的宏使用了@request变量,并且对于功能规范来说它是nil。什么是解决方法?编辑:这是我目前的规范:feature

ruby-on-rails - RSpec: stub 私有(private)方法

我尝试用RSpec2测试一个类,它有一些私有(private)方法,这些方法是从一些公共(public)方法调用的。我用测试公共(public)方法@foo.should_receive(:start_training).exactly(2).times他们是否被调用以及调用频率。我的问题是,这种方法不适用于私有(private)方法。那么,有什么方法可以将@foo.send(:private_method)与should_receive结合使用吗?或者任何其他语法? 最佳答案 should_receive(:method)无论:m

ruby-on-rails - spork 0.9.2 和 rspec 3.0.0 = 未初始化常量 RSpec::Core::CommandLine (NameError)

我正在使用spork0.9.2和rspec3.0.0。尝试运行测试rspec--drb时出现异常C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/spork-0.9.2/lib/spork/test_framework/rspec.rb:11:inrun_tests:未初始化常量RSpec::Core::CommandLine(名称错误)但是当将rspec版本更改回2.6时-一切正常。有没有人遇到过同样的问题?是否可以变通? 最佳答案 原因是RSpec::Core::Comma

ruby-on-rails - rspec、 capybara 和 cucumber 的区别

谁能告诉我rspec、capybara和cucumber的区别?group:development,:testdogem'rspec-rails','~>2.0'endgroup:testdogem'capybara','~>2.1.0'end在JavaScript中,我将Jasmine视为我的单元测试框架。这三个gem在Ruby环境中有什么作用? 最佳答案 rspec是一个功能齐全的测试框架,可让您编写Rails认为的单元测试、功能测试和集成测试。所有这些都通过Rails应用程序的各个层使用Ruby代码。所有这些测试都模拟对Rai

ruby - Guard::RSpec 错误:未指定 cmd 选项,无法运行规范

升级到guard2.6.1后,guard停止执行更改文件的规范13:27:09-INFO-LiveReloadiswaitingforabrowsertoconnect.13:27:09-INFO-Guard::RSpecisrunning13:27:09-INFO-Guardisnowwatchingat'[pathtoproject]'13:27:13-INFO-Running:spec/models/[some_model]_spec.rb13:27:13-ERROR-Nocmdoptionspecified,unabletorunspecs!我的包是Usingguard(2.6

ruby-on-rails - Rspec 和大型规范文件组织

我只是想知道其他人如何组织大型规范文件(尤其是模型),其中许多上下文和部分组织在描述block中,用于验证和其他可以以某种有意义的方式分组的规范。你们是否将有关模型的所有规范保存在该模型的同一个规范文件中,或者你们是否以某种方式拆分为模块?到目前为止,我从来没有太在意过这个,但我想知道其他人在做什么,因为似乎没有围绕最佳实践等达成某种协议(protocol)。对于某些模型,我有一些非常大的规范文件,我想将它们组织成较小的文件,而且不同模型之间几乎没有或没有共享功能,所以我不确定共享示例是否可以解决这个问题(无论可重用性如何)或者是否有更好的方法。有什么建议吗?提前致谢。