0

特定のアイコンが X 日以上のストリークを持つユーザーのビューに表示されることをテストしたいと思います。だから私はモデルのstreakメソッドをスタブする必要があります.しかし、User私はそれがそのuid. テストコードを以下に示します。

test "should display an icon for users with streak longer than 7 days" do
    node = node(:one)
    User.any_instance.stubs(:streak).returns([8,10])
    get :show, 
        author: node.author.username, 
        date: node.created_at.strftime("%m-%d-%Y"),
        id: node.title.parameterize
    assert_select ".fa-fire", 1
end

戻り値は配列で、配列の最初の値は連続記録の日数、2 番目の値は連続記録の投稿数です。

この行は、クラスUser.any_instance.stubs(:streak).returns([8,10])のインスタンスをすべてスタブします。User次のインスタンスのみをスタブ化するようにスタブ化するにはどうすればよい:uid => 1ですか?

4

1 に答える 1

0

クラス自体ではなく、特定のインスタンスをスタブ化する必要があるようです。

User.where.not(uid: 1).each do |user|
  user.stubs(:streak).returns([8,10])
end

または、(これ以上のコンテキストがないと、確かなことは言えません)、次のようにするだけでこれを最適化できます。

node.author.stubs(:streak).returns([8,10])
于 2016-05-19T12:30:54.900 に答える