【发布时间】:2014-12-03 05:39:46
【问题描述】:
在这里学习 Rails 测试
我在 Rails 默认测试中遇到错误。
这是与此控制器相关的 3 个错误之一。所有错误http://pastie.org/9756790
RundataControllerTest#test_should_get_edit:
ActionView::Template::Error: undefined method `name' for nil:NilClass
app/views/rundata/_form.html.erb:15:in `block (2 levels) in _app_views_rundata__form_html_erb___4420969876653961991_47893480'
app/views/rundata/_form.html.erb:15:in `block in _app_views_rundata__form_html_erb___4420969876653961991_47893480'
app/views/rundata/_form.html.erb:1:in `_app_views_rundata__form_html_erb___4420969876653961991_47893480'
app/views/rundata/edit.html.erb:3:in `_app_views_rundata_edit_html_erb__2870890776683796725_47932520'
test/controllers/rundata_controller_test.rb:33:in `block in <class:RundataControllerTest>'
这是在我的测试中创建 5 个错误之一的行。查看下面的所有罪魁祸首
<%= f.select(:run_id, Run.all.collect {|r| ['Run:' + r.id.to_s + ' for ' + r.company.name + ' to start on ' + r.start_date.strftime("%b %d, %Y"), r.id]}, :selected => params[:run]) -%>
这是我的 Companies.yml 装置
<% 500.times do |c| %>
company_<%= c %>:
name: <%= "company #{c} name" %>
street: <%= Random.new.rand(1000..9999).to_s + ' ' + (0...10).map { ('a'..'z').to_a[rand(26)] }.join + ' street' %>
city: <%= (0...20).map { ('a'..'z').to_a[rand(26)] }.join %>
state: <%= "MN" %>
zip: <%= Random.new.rand(10000..99999) %>
<% end %>
这是我的 runs.yml 装置
one:
start_date: 2014-09-25
end_date: 2014-09-25
company_id:
building: 1
paid: false
stage: MyString
material_total_lbs: 1
employees_needed: 1
is_test: false
requirements: MyText
two:
start_date: 2014-09-25
end_date: 2014-09-25
company_id:
building: 1
paid: false
stage: MyString
material_total_lbs: 1
employees_needed: 1
is_test: false
requirements: MyText
这是我的 rundata.yml 装置
one:
run_id:
date: 2014-09-23
building: 1
machine: MyString
material_weight: 1.5
time_mins: 1.5
rate_lb_hr: 1
mill_amps: 1
class_amps: 1
mill_liner: MyString
beater_plate_size: MyString
mill_rpm: 1
class_rpm: 1
feeder_type: MyString
feeder_setting: 1.5
feeder_aug_diameter: 1.5
tlgs_set: 1.5
air_pressure: 1
temp_mill_out: 1
temp_prod_out: 1
temp_ambient: 1
two:
run_id:
date: 2014-09-23
building: 1
machine: MyString
material_weight: 1.5
time_mins: 1.5
rate_lb_hr: 1
mill_amps: 1
class_amps: 1
mill_liner: MyString
beater_plate_size: MyString
mill_rpm: 1
class_rpm: 1
feeder_type: MyString
feeder_setting: 1.5
feeder_aug_diameter: 1.5
tlgs_set: 1.5
air_pressure: 1
temp_mill_out: 1
temp_prod_out: 1
temp_ambient: 1
关系都是has_many ->
公司 ->
在我看来,我的代码中的这些语句是罪魁祸首。
@company = rundatum.run.company
r.company.name
r.company.name
material.rundatum.id
@material.rundatum.id
rails 可以测试遍历关联吗? 我猜这与不包含关系键的固定装置有关?
任何指导都会很棒。谢谢!
【问题讨论】:
标签: ruby-on-rails testing ruby-on-rails-4