我很乐意创建基本存根,但对于如何指定诸如顺序(和反转它)之类的东西有点困惑。
举一个具体的例子,这是我想要测试的控制器中的一行:
@courses = Course.order('created_at').reverse
在我的控制器规范中,(明显失败的)存根是:
Course.stub(:all) { [mock_course] }
...和rspec错误:
Failure/Error: assigns(:courses).should eq([mock_course])
expected [#<Course:0x818614e8 @name="Course_1001">]
got [#<Course id: 2, name: "Second test course", price: #<BigDecimal:1030e73c0,'0.4995E2',18(18)>]
尽管是不准确的测试(不测试订购),我猜测规范会通过。它没有 - 它从数据库中提取,而不是模拟。 Soo ...我想我要问的是,我如何存根Course.order('created_at')。反向?
非常感谢......
答案 0 :(得分:2)
你假设ActiveRecord会在某个时刻调用Course.all,但情况可能并非如此。
试试这个:
Course.stub_chain(:order, :reverse) { [mock_course] }
为了避免必须进行链接存根,您可以将ActiveRecord代码移动到模型中,这样控制器就会有更简单的内容,例如:
Course.all_by_newest_first