[英]Error using Capybara while testing an rails 4 engine
我想通过将Capybara和factory_girl与Test :: Unit(不是rspec)一起使用来测试Rails引擎。
我编写以下测试:
test 'get review show' do
review = create(:review)
visit aecs_review.admin_review_path(review.id)
assert true
end
rake test
现在得到以下错误:
1) Error:
NavigationTest#test_get_review_show:
ActionView::Template::Error: undefined method `reviewnumber' for nil:NilClass
D:/Webserver/rails-server/ecommerce/aecs_review/app/views/aecs_review/admin/reviews/show.html.erb:1:in `_____ebserve
r_rails_server_ecommerce_aecs_review_app_views_aecs_review_admin_reviews_show_html_erb___218004451_53574504'
reviewnumber
是一种用于返回格式化ID的小模型方法。 它由视图中的@review.reviewnumber
执行。
当我尝试访问变量的属性时,在其他视图(索引等)处也会出现错误。 为什么视图中的变量始终为零? 我怎么解决这个问题?
这是我的控制器方法:
require_dependency 'aecs_review/application_controller'
module AecsReview
class Admin::ReviewsController < ApplicationController
def show
@review = Review.find(params[:id])
end
end
end
我的看法是:
<h1>Rezension anzeigen: <%= @review.reviewnumber %></h1>
[...]
引擎虚拟应用程序的rake routes
:
root GET / aecs_review/admin/reviews#index
admin_reviews GET /admin/index(.:format) aecs_review/admin/reviews#index
admin_review GET /admin/:id/show(.:format) aecs_review/admin/reviews#show
admin_review_toggle_visibility GET /admin/:id/toggle_visibility(.:format) aecs_review/admin/reviews#toggle_visibility
admin_review_destroy GET /admin/:id/destroy(.:format) aecs_review/admin/reviews#destroy
review_create POST /create(.:format) aecs_review/reviews#create
reviews GET /product/:id(.:format) aecs_review/reviews#index
reviews_overview GET /product/:id/overview(.:format) aecs_review/reviews#overview
reviews_rating GET /product/:id/rating(.:format) aecs_review/reviews#rating
review_new GET /product/:id/new(.:format) aecs_review/reviews#new
review GET /:id(.:format) aecs_review/reviews#show
review_edit GET /:id/edit(.:format) aecs_review/reviews#edit
review_update PATCH /:id/update(.:format) aecs_review/reviews#update
review_destroy GET /:id/destroy(.:format) aecs_review/reviews#destroy
review_create_evaluation_good GET /:id/create_evaluation/good(.:format) aecs_review/reviews#create_evaluation_good
review_create_evaluation_bad GET /:id/create_evaluation/bad(.:format) aecs_review/reviews#create_evaluation_bad
review_create_evaluation_abusing GET /:id/create_evaluation/abusing(.:format) aecs_review/reviews#create_evaluation_abusing
我发现了问题!
在控制器中,我有一个before_filter
,它是主应用程序的一部分。 所以我想重写它。 但是我不小心覆盖了完整的控制器,因此不再需要执行任何控制器方法。
现在,我跳过了before_filter,它起作用了!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.