gpt4 book ai didi

ruby-on-rails - 如何处理 RSpec 和 Rails 中的模拟嵌套资源?

转载 作者:行者123 更新时间:2023-12-04 06:09:51 26 4
gpt4 key购买 nike

我有一个用户阅读列表的嵌套资源(一个用户有_很多阅读列表)。我试图模拟 Controller 规范中的所有内容,但无法保持简洁。这是 #show 操作的前代码:

@reading_lists = mock("Reading lists")
@reading_lists.stub!(:find).with("1").and_return(@reading_list)
@user = mock_model(User, :reading_lists => @reading_lists)
User.stub!(:find).with("1").and_return(@user)
get :show, :user_id => "1", :id => "1"

正在测试:

def show
@user = User.find(params[:user_id])
@reading_list = @user.reading_lists.find params[:id]
end

这似乎是一个疯狂的样板 - 有没有更好的方法来模拟它?

最佳答案

没有更好的方法来模拟它,但您注意到这是很多样板是正确的。原因是 user.reading_lists.find 违反了 Demeter 法则。无论您是否认为得墨忒耳法则重要,通过违反它来 mock 都是痛苦的。

我建议使用真实模型或简化与模型的交互。如果没有看到您要指定的内容,我真的无法说出具体方法。

关于ruby-on-rails - 如何处理 RSpec 和 Rails 中的模拟嵌套资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6557900/

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