Tag: function测试

任意或自定义URL的Railsfunction测试

我的Rails应用程序中有一个名为“Photo”的RESTful资源。 我正在使用Paperclip来为我的照片提供不同的“样式”(缩略图等),并且我使用自定义路径来RESTful访问这些样式: map.connect “photos/:id/style/*style”, :controller => “photos”, :action => “show” 这工作正常,但我想写一个测试,以确保它保持这种方式。 我已经有一个function测试来调用Photo控制器的show动作(实际上是由scaffold生成): test “should show photo” do get :show, :id => photos(:one).to_param assert_response :success end 它测试URL“/ photo / 1”处的动作执行情况。 现在我想测试URL“/ photo / 1 / style / foo”的执行情况。 不幸的是,我似乎无法让ActionController :: TestCase点击该URL; get方法总是需要一个action / id,并且不接受URL后缀。 如何测试自定义url? 更新 在检查@ fernyb的答案时,我在同一个rdoc中找到了这个片段 在测试中,您只需传递URL或命名路由即可获取或发布。 def send_to_jail get’/ jail’assert_response:success assert_template“jail / front”end […]

Rails在function测试中找不到路由

Rails版本3.0.4和Ruby 1.9.2 我正在使用设计gem,并设置我的应用程序,以便用户必须登录才能执行任何操作。 在编写我的function测试时,我发现所有的测试都抛出了同样的错误。 `method_missing’: undefined method `new_user_session_path’ 这很奇怪,如果我rake routes我可以看到 new_user_session GET /devise/login(.:format) {:action=>”new”, :controller=>”devise/sessions”} 我还可以确认,当我运行应用程序时,所有link_to可以使用该路径。 对于某个控制器的测试来看其他路线,我有什么特别之处吗? 的routes.rb Nge::Application.routes.draw do resources :companies resources :users devise_for :users, :path => “devise”, :path_names => { :sign_in => ‘login’, :sign_out => ‘logout’, :password => ‘secret’, :confirmation => ‘verification’, :unlock => ‘unblock’, :registration => ‘register’, :sign_up => ‘cmon_let_me_in’ } … […]

Ruby on Rails 2.3.8:在过滤之前忽略了破坏行为

所以,我正在乱用我的应用程序测试用户权限,但这个测试真的很奇怪。 这是我想要在我的ContentsController中工作的前filter: before_filter :only => :destroy do |controller| controller.prevent_packet_sniffing_destroy_hack(controller_name.classify.constantize) end 我正在努力让这个控制器的一组测试工作,以便我可以将之前的filter复制到具有类似行为的其他控制器 考试: should “not allow the deleting of #{plural_name} on different accounts” do login_as(@user) p = Factory(factory_name, :account => Factory(:account)) assert_difference(“#{klass}.count”, 0) do delete :destroy, :id => p.id klass.find_by_id(p.id).should_not be_nil end end 对于那些感兴趣的人来说,这是一个广义的测试,我在所有具有类似function的对象上运行。 以下是方法参数’klass’定义的变量 factory_name = klass.name.tableize.singularize.to_sym plural_name = klass.name.tableize singular_name = klass.name.tableize.singularize 我试图测试的控制器的destroy方法: def […]

如何在rails中的function测试中启用页面缓存?

是否可以打开页面缓存进行function测试? 以下不起作用: class ArticlesControllerTest < ActionController::TestCase def setup ActionController::Base.public_class_method :page_cache_path ActionController::Base.perform_caching = true end end 提前致谢 德布

如何在Rails 3中的function测试中使用polymorphic_path

我正在尝试在Rails 3中的function测试中使用polymorphic_path 。 起初我会得到 NoMethodError: undefined method `polymorphic_path’ for # 然后我补充道 include Rails.application.routes.url_helpers undefined method error停止,但现在常规路径(例如article_path(article)已停止工作: NameError: undefined local variable or method `default_url_options’ for # .rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/action_dispatch/testing/assertions/routing.rb:175:in `method_missing’ .rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/action_dispatch/routing/url_for.rb:102:in `url_options’ .rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/action_dispatch/routing/url_for.rb:131:in `url_for’ .rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/action_dispatch/routing/route_set.rb:195:in `article_path’ 我曾经能够通过包含在Rails 2中正常使用polymorphic_path include ActionController::UrlWriter 我怎样才能在Rails 3中使用它?

如何在Rails Functional Test中为不同的控制器调用不同的post

我想向我的function测试中的不同控制器发出一个发布请求,该控制器用于特定的控制器。 但是,ActiveController类中的post方法只是调用方法,它不会调用控制器名称。 任何想法如何调用不同的控制器?

(Rails)断言_选择恼人的警告

有没有人知道如何在rake测试期间使assert_select不输出所有那些讨厌的html警告? 你知道,像这样的东西: .ignoring attempt to close body with div opened at byte 1036, line 5 closed at byte 5342, line 42 attributes at open: {“class”=>”inner02”} text around open: “\r\t\r\t<body class=\"inner02" text around close: "\t\r\t\t\t\r\t\t\r\t\r</ht" 谢谢

用shoulda测试设计

我在使用shoulda测试设计方面遇到了一些困难: 2) Error: test: handle :index logged as admin should redirect to Daily page. (Admin::DailyClosesControllerTest): NoMethodError: undefined method `env’ for nil:NilClass devise (1.0.6) [v] lib/devise/test_helpers.rb:52:in `setup_controller_for_warden’ 我在test_helper中有这个: include Devise::TestHelpers 想法? 提前致谢, 克里斯提

Ruby on Rails使用Devise身份validation进行function测试

我正在寻找一个解决奇怪问题的方法。 我有一个控制器,需要身份validation(使用设计gem)。 我添加了Devise TestHelpers,但我无法让它工作。 require ‘test_helper’ class KeysControllerTest ‘testuser@demomailtest.com’, :password => ‘MyTestingPassword’, :password_confirmation => ‘MyTestingPassword’ ) sign_in @user @key = keys(:one) end test “should get index” do get :index assert_response :success assert_not_nil assigns(:keys) end test “should get new” do get :new assert_response :success end test “should create key” do assert_difference(‘Key.count’) do post :create, :key => […]

如何在rails 3function测试中发布JSON数据

我打算在我的项目中的请求和响应中使用JSON数据,并在测试中遇到一些问题。 搜索一段时间后,我发现以下代码使用curl发布JSON数据: curl -H “Content-Type:application/json” -H “Accept:application/json” \ -d ‘{ “foo” : “bar” }’ localhost:3000/api/new 在控制器中,我可以使用params[:foo]访问JSON数据,这非常简单。 但是对于function测试,我只找到post和xhr ( xml_http_request别名)。 如何在rails中编写function测试以达到与使用curl相同的效果? 或者我应该以其他方式进行测试? 这是我尝试过的。 我在action_controller/test_case.rb找到xhr的实现,并尝试添加jhr方法,只需更改’Conetent-Type’和’HTTP_ACCEPT’。 (在test/test_helpers.rb添加。) def json_http_request(request_method, action, parameters = nil, session = nil, flash = nil) @request.env[‘Content-Type’] = ‘Application/json’ @request.env[‘HTTP_ACCEPT’] ||= [Mime::JSON, Mime::JS, Mime::HTML, Mime::XML, ‘text/xml’, Mime::ALL].join(‘, ‘) __send__(request_method, action, parameters, session, flash).tap do @request.env.delete […]