我正在編寫測試類來執行我的方法類(在方法類中有一個將執行的sql語句) 但是NoMethodError: undefined method
持續時間'for nil:NilClass` is給出。NoMethodError:未定義的方法'duration'爲零:NilClass
class AverageTimeForFirstReferralTest < ActiveSupport::TestCase
def setup
user1 = FactoryGirl.create(:user)
user2 = FactoryGirl.create(:user)
user2.referrer_id = user1.id
user2.created_at = 1.month.from_now
end
def test_creating_view_for_avg_time_for_first_ref
AverageTimeForFirstReferral.update_view_command();
assert_equal(1.month * 1.hour, AverageTimeForFirstReferral.first.duration)
end
end
方法類如下:
class AverageTimeForFirstReferral < ActiveRecord::Base
class << self
def update_view_command
# executing the sql statement
self.connection.execute %Q(CREATE OR REPLACE VIEW average_time_for_first_referrals AS
SELECT u.id, u.created_at user_created_at, u.referrer_id, r.`created_at` referrer_created_at, TIMEDIFF('r.created_at','u.created_at') as Time_Diff
from users u inner join users r
on u.`referrer_id`= r.`id`
WHERE TIMEDIFF(r.created_at,u.created_at) > 0;)
end
end
end
看起來您的表格中現在有行'AverageTimeForFirstReferral',您需要使用工廠女孩創建一行。 – coderhs