【发布时间】:2014-10-24 05:06:43
【问题描述】:
Uninitialized constant Production::POverview (NameError)
from /Users/simon_zhu/.rvm/gems/ruby-2.1.0/gems/factory_girl-4.4.0/lib/factory_girl/syntax/default.rb:49:in `instance_eval'
from /Users/simon_zhu/.rvm/gems/ruby-2.1.0/gems/factory_girl-4.4.0/lib/factory_girl/syntax/default.rb:49:in `run'
from /Users/simon_zhu/.rvm/gems/ruby-2.1.0/gems/factory_girl-4.4.0/lib/factory_girl/syntax/default.rb:7:in `define'
from /Users/simon_zhu/Documents/original_version_carmel/carmel/spec/factories/poverview.rb:1:in `<top (required)>'
from /Users/simon_zhu/.rvm/gems/ruby-2.1.0/gems/factory_girl-4.4.0/lib/factory_girl/find_definitions.rb:20:in `block (2 levels) in find_definitions'
from /Users/simon_zhu/.rvm/gems/ruby-2.1.0/gems/factory_girl-4.4.0/lib/factory_girl/find_definitions.rb:19:in `each'
我有以下代码:
poverview.rb(工厂)
FactoryGirl.define do
factory :poverview, class: Production::POverview do
name "test"
status ["p", "d", "m"]
end
end
p_overview_controller_spec.rb(规格)
require 'spec_helper'
describe Production::POverviewController do
login_user
# GET Request to pod_info
describe 'GET pod_info' do
before(:each) do
@pods = Factory(:poverview)
get 'show', :format => :json, :name => @pods.name
get 'show', :format => :json, :status => @pods.status
end
it "should return the correct company when correct id is passed" do
body = JSON.parse(response.body)
for(pod in body[0])
if(pod['name'].eql? @pod.name)
@pod.status.should.include? pod['status']
end
end
end
end
这是我第一次为 Factory Girl 编写集成测试,我遇到了这个未初始化的常量错误。
任何想法如何解决这个问题?
【问题讨论】:
-
你能贴出你的型号代码吗?您的模型是否按照您的示例所建议的命名空间?
-
我认为你的意思是控制器。这些测试是针对控制器的测试。控制器的命名空间正确(poverview_controller 在生产命名空间内)。
-
您正在根据 Factory girl 中名为 Production::POverview 的模型定义工厂。这是模特的名字吗?那是错字吗?这可能是你的问题
-
对不起,我有点困惑。这是我的错,测试应该是模型测试。不是控制器。
-
看来我没有模型,这就是我收到此错误的原因。我想要一种方法来测试我的控制器(返回 json)而不创建模型。有没有办法做到这一点?
标签: ruby-on-rails factory-bot integration-testing