gpt4 book ai didi

ruby-on-rails-3 - 复杂的 Arel 查询和 RSpec stub

转载 作者:行者123 更新时间:2023-11-28 19:59:33 24 4
gpt4 key购买 nike

假设我们有这样一段代码:

def index
@posts = Post.where(:status => ACTIVE)
if params[:s]
@posts = Post.where("title like ?", "%#{params[:s]}%").order("title asc")
else
@posts = Post.limit(20).order("date desc")
end
end

在指定此操作时,我们可以为每个示例编写一个 stub 链,但如果我们想专注于其他地方,这种方式会限制我们很多。

当您不知道顺序或将调用多少方法时,为 RSpec stub 复杂 Arel 查询的最佳方法是什么?

注意:我正在查看 Stubbing Chained Queries in Rails 3 and Rspec我想我想要的是 stub_chain_with_indifferent_order(:where, :order, :limit)

最佳答案

这可能是告诉您您在错误级别执行此操作的代码。我非常喜欢 RSpec 的 MOCK ALL THE THINGS(!!) 理念:如果它变得难以模拟,也许你的设计是错误的。

例如,我可能会将您的代码重构为:

def index
@posts = Post.posts_for(:like => params[:s], :order => (params[:s] ? "title asc" : "date desc")
end

(或者根据您的域稍微好一点。)

然后您可以模拟 Posts.posts_for,这是一个简单的方法调用,而不是尝试模拟大量 AR 链式方法。

关于ruby-on-rails-3 - 复杂的 Arel 查询和 RSpec stub ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6899497/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com