0

を使用しTest::Unitていますが、ペーパークリップのURLをテストしたいと思います。

現在、次のようなテストがあります。

  def test_our_custom_url
    dummy = Dummy.new(:image => File.open("#{RAILS_ROOT}/test/fixtures/12k.png"))
    dummy.save!
    assert_match "/system/images/1/original/12k.png", dummy.image.url
    dummy.reload
    assert_match "/system/images/1/original/12k.png", dummy.image.url
  end

そしてそれはこのように失敗します:

Expected /\/system\/images\/1\/original\/12k.png/ to match "/system/dummies/images/000/000/001/original/12k.png?1352140343".

?1352140343パーツをテストに追加するにはどうすればよいですか?

ペーパークリップのソースコードで、次のように定義されているようです。

def timestamp_as_needed(url, options)
  if options[:timestamp] && timestamp_possible?
    delimiter_char = url.match(/\?.+=/) ? '&' : '?'
    "#{url}#{delimiter_char}#{@attachment.updated_at.to_s}"
  else
    url
  end
end

ただし、実行dummy.updated_at.to_sすると、通常の日付/タイムスタンプが返さ1352140343れます(この場合)。

違いがあれば、ローカルストレージを使用しています。

4

1 に答える 1

2

?1352140343URLの部分を比較するのは良くありません。

比較してreceived_url.starts_with?(expected_url)、文字列のその部分のみをチェックできます...

于 2012-11-05T19:23:03.270 に答える