与许多非greenfeild项目一样,我到达新工作后发现大多数测试都是使用功能规范而不是Controller/模型规范执行的。这自然意味着测试需要很长时间才能执行。有没有一种方法可以设置RSpec,以便我的功能测试最后运行-并且只有在所有其他测试首先成功时它们才会运行。我正在将应用程序迁移到Controller测试以加快执行速度,但如果模型验证出现问题或我的Controller之一被破坏,则无需等待15分钟来完成功能测试。我想做的事可行吗?(我目前正在RubyMine中运行测试;但如果需要,我可以转到rakespec)。 最佳答案
我仍在努力学习RSpec,所以如果完全忽略了某些东西,我很抱歉......我正在为包含许多成分的食谱编写测试。成分实际上是按百分比添加的(配方中有总百分比列),因此我想确保总列在每次保存后更新。所以现在我的recipe_ingredient模型的RSpec测试是这样的:it"shouldupdaterecipetotalpercent"do@recipe=Factory.create(:basic_recipe)@ingredient.attributes=@valid_attributes.except(:recipe_id)@ingredient.recipe_id=@recipe
我正在尝试为inherited_resourcesController编写规范。我决定使用rspec的mock_model模拟所有与数据库的集成。不幸的是,我无法为创建和更新操作编写规范,因为我收到以下错误:https://gist.github.com/936947有人可以帮我解决这个问题吗? 最佳答案 我在使用flexmock时遇到了同样的问题。原因是它没有使用update_attributes方法来做出路由决策。它检查resource.errors以查看它是否为空。因此,为了让它正确响应,我们还需要模拟errors方法。这是l
我只是花了很长时间试图弄清楚为什么我的规范单独通过,但是当同时运行Controller和库测试时,一些规范莫名其妙地失败了。罪魁祸首是:在一个规范中:describeSomeThingdoCONSTANT_VALUE="avalue"#...examplesetc...end还有一个:describeAnotherThingdoCONSTANT_VALUE="adifferentvalue"#...therestishistoryend我分配给这些常量的值在我的规范之间泄漏并导致意外行为。我应该使用letblock来定义常量等吗?还是别的? 最佳答案
我正在尝试在过滤器之前编写一个RSpec来让用户登录。我有一个产品Controller。为了查看产品,用户必须登录。我在spec/support/utilities中添加了一个登录方法,如下所示:deflogin(user)postlogin_path,email:user.email,password:"password"end然后我在我的spec/controllers/products测试中调用了beforefilter中的方法:before:eachdouser=FactoryGirl.create(:user)login(user)end当我运行测试时,出现以下错误:Thea
我有一个基于ActiveRecord的模型:-House它有各种属性,但没有formal_name属性。但是它确实有一个用于formal_name的方法,即defformal_name"Formal#{self.other_model.name}"end如何测试此方法是否存在?我有:describe"checkthename"do@report_set=FactoryGirl.create:report_setsubject{@report_set}its(:formal_name){should=="this_should_fail"}end但是我得到了undefinedmethod
我在Sinatra应用程序上运行某些rspec规范时遇到问题。我只是在学习Ruby,所以很遗憾,我的知识不足以解决我在使用一本书(RubyonRails中面向服务的设计,PaulDix着)中的代码时遇到的问题。问题是这些测试并没有真正运行(我认为)。在应用程序目录中,我运行$rubyspec/service_spec.rb,但我没有看到测试通过或失败的迹象。我从文件/service.rb中得到几条日志消息,但这就是显示的所有输出。我加入了一些puts调用来显示beforeblock和itblock没有被执行(即使describeblock被执行)。如果您想查看有关代码的更多信息,请
我最近通过rubyweekly电子邮件发现了SitePrism。看起来很棒。我可以预见它会成为future。我看到的例子大多是cucumber步骤。我想弄清楚如何将SitePrism与rspec结合使用。假设主页为@home_page,login_page为@login_page我可以这样理解@home_page.load#=>visit@home.expanded_url然而,我不确定的部分是,如果我想点击例如“登录”链接,capybara中的浏览器会转到登录页面-然后我如何访问登录页面的实例,没有加载它。@home_page=HomePage.new@home_page.loa
我正在将带有Rspec的测试集成到一个相当大的/已开发的应用程序中。当我运行测试时,我的一些初始化程序出现了非常奇怪的错误。例如,我的carrierwave.rb加载了一个yaml文件,当我运行测试命令时,我得到:carrierwave.rb:11:in`blockin':undefinedmethod`[]'fornil:NilClass指的是下面第二行代码:fog_config=YAML::load_file(Rails.root.join'config/fog.yml')[Rails.env.to_s]config.fog_directory=fog_config['direct
我是测试新手,所以我不确定我应该在这里调试什么。也就是说,我有两种不同的用户类型:作者和读者,它们是用户的子类。他们都可以在我的应用程序中正常注册,读者测试也没有任何问题。作者的注册表单包括一个stripe付款表格-并在提交表格之前远程调用Stripe的API。这是测试的样子:require'spec_helper'feature'Authorsignup'doscenario'authorcanseesignupform'dovisitroot_pathexpect(page).tohave_css'form#new_author'endscenario'usersignsupand