在我的课程中模拟我的AR协会链的输入的正确方法是什么
class OfficeHourScheduler
def initialize(company)
@company = company
end
def active_office_holiday
@company.office_holidays.active
end
end
所以在我的Rspec中,我想测试active_office_holiday的输出而不在DB中创建任何实际数据。
目前我正在测试这样,不确定它是否是最佳方式。
expect_any_instance_of(Company).to receive_message_chain('office_holidays.active')
答案 0 :(得分:0)
expect ... to receive
模式无法确保您获得正确的结果,对吗?
一个问题是,为什么你不想在数据库中创建数据?它只是在测试数据库。
我会在数据库中创建几条记录。例如。 2家公司A& B和公司A的2个office_holidays,一个处于活动状态,一个处于非活动状态,B公司的一个office_holiday处于活动状态。
当您将公司A传递到您的班级时,我希望@company.office_holdays
能够返回这两个相应的记录。在您致电active
后,这两个假期都应该有效。
答案 1 :(得分:0)
在您当前的测试中,您没有测试范围的结果,而只是调用来自office_holidays
的{{1}}和active
这一事实。
你可以这样做的一种方法是,例如:
Company