场景我提取了一个名为Taggable的关注点。它是一个允许任何模型支持标记的模块。我已将此关注点/模块包含到模型中,例如User、Location、Places、Projects。我想为这个模块编写测试,但不知道从哪里开始。问题1。我可以对Taggable问题进行隔离测试吗?在下面的示例中,测试失败是因为测试正在查找dummy_class表。我假设它这样做是因为Taggable中的has_many代码,因此它期望'DummyClass'是一个ActiveRecord对象。#/app/models/concerns/taggable.rbmoduleTaggableextendActiv
在Java中,通常您会创建两个具有相同包层次结构的源文件夹src和test。在Ruby中,您是否只是将所有测试放在与被测类相同的文件夹中?还是在单独的文件夹中创建类似的层次结构?如果是这样,您如何管理单元测试中的require路径? 最佳答案 起初,每个gem都有一个典型的布局。代码几乎完全在lib中。在根目录中,只有README、gemspec文件和一些可选配置数据等元数据。如果您使用Rails或Sinatra之类的工具编写Web应用程序,则会改用它们的布局标准。尽管在所有这些项目类型中,都可以在相似的位置找到测试。根据您使用的测
我已经使用sinatra编写了一个基本的RESTAPI。有谁知道为它编写测试的最佳方法吗?我想使用Ruby来做到这一点。我已经使用curl完成了初步测试。但我想做一些更强大的事情。这是我的第一个API-有什么我应该测试的具体内容吗? 最佳答案 最好的方式见仁见智:)就我个人而言,我喜欢简单干净。使用像minitest这样的工具,Watir和rest-client,您可以对REST界面进行非常简单的测试,并通过实际浏览器(支持所有主要浏览器)测试您的Web服务。#!/usr/bin/ruby##Requiresthatyouhavei
我看到两种样式都被广泛使用:#1lambda{raise"Boom"}.shouldraise_error和#2expect{raise"Boom"}.toraise_error.我喜欢expect..tomore,因为它读起来更好,并且隐藏了过程的创建。我查看了rspec代码,似乎expect..to是suggested,但是我经常遇到使用lambda..should的库。期望..更新,因此还不是“著名”吗? 最佳答案 expect从rspec-2开始使用,之前必须使用lambda。RSpec“正式”建议使用expect,他们可能
我正在编写一个与Rails集成的gem,我希望能够在我的gem的测试套件中使用rspec测试一个虚拟应用程序。当我测试我的虚拟rails应用程序是否通过加载/几个模块时,问题出现了rspec规范/integration/rails/load_path_spec.rb到目前为止,这是我所拥有的:#spec/support/rails_app/config/environment.rb#LoadtheRailsapplication.requireFile.expand_path('../application',__FILE__)#Loadthegemrequire'skinny_con
我在运行使用具有模型之间关联的固定装置的测试时遇到问题。这是我一运行raketest就得到的错误:ERROR["test_truth",SevenPortfolioTest,0.005154775]test_truth#SevenPortfolioTest(0.01s)NoMethodError:NoMethodError:undefinedmethod`type'fornil:NilClassERROR["test_should_destroy_item_video",SevenPortfolio::ItemVideosControllerTest,0.008887804]test_
我正在使用seeds.rb填充一些状态模型引用数据:State.create:name=>'Alabama',:abbreviation=>'AL'State.create:name=>'Alaska',:abbreviation=>'AK'#...虽然我没有使用状态固定装置(因为它是种子数据,我认为纯粹为了测试而复制它不会是DRY),Rails测试框架似乎删除了所有状态种子数据测试。(我正在删除、重新创建、迁移和重新播种测试数据库,并在单元测试运行之前确认数据在那里。)结果是此断言在seeds.rb中成功但在单行测试中失败:assert_equal51,State.all.size1
我正在尝试针对远程服务器运行测试。即:require'rubygems'require'capybara'require'capybara/dsl'Capybara.default_driver=:seleniumCapybara.app_host='http://www.google.com'moduleMyCapybaraTestincludeCapybaradeftest_googlevisit('/')endend问题是,你如何运行它? 最佳答案 保存require'rubygems'require'capybara'req
背景:我有一个带有cover_file属性的Book模型,该模型通过我的一个RailsController使用上传的文件进行设置。我正在使用Railsv4.0.4。目标:我想测试只保存具有特定内容类型的文件。我计划使用设置了不同content_type属性的ActionDispatch::Http:UploadedFile对象创建Rspec测试示例。问题:当我用content_type初始化一个新的ActionDispatch::Http::UploadedFile时,它似乎没有被设置(请参阅下面的测试和输出,确认它为零)。看来我只能在UploadedFile初始化后用setter设置
Controller中的内容如下:respond_todo|format|format.csv{send_dataas_csv,type:'text/csv'}end在规范中:click_link'DownloadCSV'page.driver.browser.switch_to.alert.acceptexpect(page).tohave_contentcsv_data但这行不通:Failure/Error:page.driver.browser.switch_to.alert.acceptSelenium::WebDriver::Error::NoAlertPresentErro