我正在努力涵盖我的单元测试中所有模型的方法,关联和验证,并且到目前为止它效果很好。我已经订阅了TreeHouse并且虔诚地观看了Ruby Foundations - Testing。需要帮助了解为什么单元测试方法不起作用
我昨晚无意中发现了这个错误,测试方法为我Provider.rb型号:
class Provider < ActiveRecord::Base
attr_accessible :description, :name
validates :name, :presence => true
validates :description, :presence => true
validates :name, :length => { :minimum => 6, :maximum => 100 }
validates :description, :length => { :minimum => 6, :maximum => 100 }
has_many :courses
resourcify
def unique_locations
Location.joins(sessions: :course).where(courses: { provider_id: self.id }).uniq.pluck('locations.name')
end
end
我对unique_locations方法单元测试如下:
test 'should return a list of unique locations' do
provider = FactoryGirl.build(:provider)
assert_equal provider.unique_locations, ["location_1", "location_2"]
end
我得到的运行我的测试后出现以下错误:
<[]> expected but was
<["location_1", "location_2"]>.
我的工厂很简单:
FactoryGirl.define do
factory :course do
name 'Snowboard 101'
description 'Snowboard course'
association :provider, factory: :provider
end
end
FactoryGirl.define do
factory :provider do
name 'The School of Hard Knocks'
description 'School description'
end
end
FactoryGirl.define do
factory :session_snowboard, class: Session do
name 'Winter Session'
description 'Snowboarding 101'
price 200
class_size 4
association :course, factory: :course
association :location, factory: :location_1
end
factory :session_ski, class: Session do
name 'skiing 101'
description 'Start in november'
price 100
class_size 4
association :course, factory: :course
association :location, factory: :location_2
end
end
FactoryGirl.define do
factory :location_1 do
name 'location_1'
end
factory :location_2 do
name 'location_2'
end
end
我的unique_locations方法在我的不同环境中工作正常。我只是无法弄清楚为什么它没有返回测试中唯一位置的列表。
任何想法?
感谢, 弗朗西斯
感谢您的回复,我正在使用.create,但仍然收到相同的错误消息。 – 2013-04-11 17:24:10