0

データベースの状態を設定する必要があるテストがあります。

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_domainonを正規化しているという事実と何か関係があるの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
4

0 に答える 0