Tag: 测试

嵌套表格:如果没有输入儿童信息,则不应保存

我有一个嵌套的表单来注册一个新的组织和一个成员(1:组织与其成员之间的很多关系)。 两者都在模型文件和迁移文件中都有validation。 问题 :如果没有正确输入两者的信息,我希望表格不要注册任何东西(不是组织或成员)。 目前,当我注册一个新组织但是将该成员的所有变量都留空时,它会在没有错误消息的情况下注册该组织,并且它不会注册任何成员。 相反,我希望它也尝试编写成员,然后生成错误消息,因为成员的某些变量不允许为空。 由于该错误,它不应该保存组织,直到成员信息也是正确的。 如果我为成员输入一些信息,这确实可以正常工作:如果该成员随后无效,则不会保存组织或成员并给出错误。 如果我输入成员的有效信息而没有组织信息,它也能正常工作:它会产生错误并且不会保存任何内容。 但是如果我为组织输入有效信息而没有成员信息则不起作用:它不会产生任何错误并仅保存组织。 我应该如何更改我的代码来调整它? 风景: 部分/forms: Details of the organization: Your personal details: 和控制器: def new if (logged_in?) flash[:danger] = “You’re already logged in” redirect_to root_url end @organization = Organization.new @member = @organization.members.build end def create @organization = Organization.new(new_params) if @organization.save @organization.members.each do |single_member| single_member.send_activation_email end flash[:success] = […]

如何在测试我的应用程序之前自动加载测试数据库中的数据?

我正在使用Ruby on Rails 3.0.9和RSpec 2.我想在测试我的应用程序之前在测试数据库中自动加载种子数据。 也就是说, 在测试启动时(当我运行测试时),我想“自动填充”“自动启动”测试数据库 。 如何使用种子数据填充数据库? PS :当我读到时,(也许)我应该通过在/spec/spec_helper.rb文件中添加一些代码来填充测试数据库……但是代码和方法是什么? 在我的task/custom.rake文件中,我有: namespace :test do desc “Boot database” task :boot => [:load, :seed] do end desc “Reboot database” task :reboot => [:purge, :boot] do end end

如何为测试目的模拟数据库故障(在Ruby on Rails中)

通过某些监视工具(例如Monit)使用心跳消息使应用程序幸存下来是一种常见的设置。 如果应用程序正在运行并且一切正常,它将返回“我还活着”消息,如果数据库失败或Web服务器挂起,则返回任何内容或内部服务器错误(HTTP状态代码500)页面。 如何模拟数据库失败以在Ruby on Rails中测试此行为? 如果可以在测试( Test::Unit或RSpec )本身内为测试目的启用/禁用此function,那将是很好的。

运行Cucumber测试时Rails应用程序的端口

有没有办法在测试中获得在黄瓜测试期间运行rails应用程序的端口? 我试过Capybara.server_port,但那是零。 谢谢。

如何使用rpec在Rails测试环境中加载seed.rb?

我有以下seeds.rb文件: State.create [ {:name => “Alabama”, :abbreviation => “AL” }, {:name => “Alaska”, :abbreviation => “AK” }, {:name => “Arizona”, :abbreviation => “AZ” }, {:name => “Arkansas”, :abbreviation => “AR” }, {:name => “California”, :abbreviation => “CA” }, {:name => “Colorado”, :abbreviation => “CO” }, {:name => “Connecticut”, :abbreviation => “CT” }, {:name => “Delaware”, […]

在Rails中重新生成夹具测试文件

如何重新生成所有YML夹具文件? 我不小心删了它们。

minitest:未定义的方法`get’

我需要用minitest来测试我的控制器。 我试过了: describe ‘CommentsController’ do it “should get index” do get :index assert_response :success end end 和 class CommentsControllerTest < MiniTest::Unit::TestCase def test_should_get_index get :index assert_response :success end end 但我有“未定义的方法`get’”错误

是否有可能和/或建议在rails中动态生成测试?

我发现在rails应用程序编程中非常方便的一个技巧是class_eval可用于动态创建方法。 我现在开始进行测试,我想知道是否可以使用类似的想法来生成测试。 例如,我有一个before_filter要求用户登录控制器中的所有操作。 我想编写测试,确保将before_filter应用于所有操作。 我不想单独写出每个测试,而是自动生成所有这些测试。 这种类型的测试是否可取,或者我应该坚持单独编写测试? 如果是的话,怎么会这样做呢? 编辑:这可能看起来像: actions = {:index => :get,:show => :get,:edit => :get,:update => :put} actions.each_pair do |action,type| class_eval(%Q{def test_user_required_for_#{action} set_active_user users(:one) #{type} :#{action} assert flash[:error] assert_redirected_to :action => :index end }) end 现在人们已经证实这可能是有用的,我会在哪里放置一段这样的代码,以便它只执行一次,只创建一次这些测试?

如何更快地在RoR上运行测试?

我正在使用Ruby on Rails 3并编写测试,但速度太慢了。 是否有一些好的配置或工具可以加快速度?

Rails中的多个Fixture集?

有没有办法让Rails测试有不同的夹具组(你可以称之为“夹具轮廓”)? 我发现的最好的是2006年的Rails 1.3插件 。 我认为对这种事情的需求会更多。 就我而言,我想要一个“离线”配置文件,其中包括所有数据的缓存,以及获取数据所需的另一个“在线”配置文件。