gpt4 book ai didi

ruby-on-rails - rSpec ==/eql 无法比较 'same' 的东西

转载 作者:行者123 更新时间:2023-12-04 06:13:46 25 4
gpt4 key购买 nike

我有一个获取 ActiveRecord 范围的 Controller 索引测试。测试目前看起来像这样(包括一些内联调试的东西):

describe "GET index" do
it "assigns all schools as @schools" do
get :index
puts assigns(:schools).class
puts School.populated.class
assigns(:schools).should == School.populated
end
end

输出是这样的:

ActiveRecord::Relation
ActiveRecord::Relation

expected: []
got: [] (using ==)
Diff:

这绝对不是我第一次在最新版本的 Rails 和 rSpec 中遇到这种情况。以前同事只是将项目包装在 to_a 中进行比较,我觉得这有点脏,可能不是一个好的解决方案。

有什么想法吗?我很好奇为什么它认为它们不同,以及相同的测试如何在旧版本的 Rails 和/或 rSpec 中通过。

最佳答案

eql== 相同。 Rspec talks only 的作者不要使用!=,而是使用should_not

actual.should == expected
#is interpreted as this:

actual.should.==(expected)

#This is not true for !=. Ruby interprets this: actual.should != expected
#as follows:

!(actual.should.==(expected))

更新:Relation提供了Lazy Load模式,所以你在这一步上没有任何执行过的查询。这意味着在第一次请求时触发查询

关于ruby-on-rails - rSpec ==/eql 无法比较 'same' 的东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7346422/

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