データベースの状態を設定する必要があるテストがあります。
before do
Site.first.update_attribute(:primary_domain, @params[:order][:primary_domain])
end
しかし、何らかの理由で、これは @params を変更します:
before do
@params[:order][:primary_domain].must_equal "example.com"
Site.first.update_attribute(:primary_domain, @params[:order][:primary_domain])
@params[:order][:primary_domain].must_equal "example.com"
end
これが失敗し、2 番目@params[:order][:primary_domain].must_equal "example.com"
が失敗し、何かが更新されます@params[:order][:primary_domain]
。奇妙なことに、私は に触れないことを期待していたでしょうが、どういうわけか、update_attribute(name, value)
触れています。value
で回避できます.dup
。しかし、私はこれを引き起こす可能性があることに興味があります。それはおそらく範囲の問題ですか?Site.primary_domain
onを正規化しているという事実と何か関係があるのsave
でしょうか。
# Override the primary_domain setter.
# Allows us to normalise the domain
def primary_domain=(primary_domain)
return primary_domain unless primary_domain.is_a?(String)
write_attribute(:primary_domain, Site.parse_uri(primary_domain.dup).host)
end