2016-04-09 11 views
1

を保持する変数を比較すると、私はそれは、エラー発生させTravis CI RSpecテスト。同時に

it 'could not update question' do 
    old_title = question.title 
    old_body = question.body 
    old_updated_at = question.updated_at 

    patch :update, id: question, question: attributes_for(:question, title: 'new valid title', body: 'new valid body'), format: :js 
    question.reload 

    expect(question.title).to eq old_title 
    expect(question.body).to eq old_body 
    expect(question.updated_at).to eq old_updated_at 
    end 

このようなテストがあります。

1) QuestionsController PATCH #update question by someone else could not update question Failure/Error: expect(question.updated_at).to eq old_updated_at

expected: 2016-04-09 18:05:03.650576201 +0000 
     got: 2016-04-09 18:05:03.650576000 +0000 

するとどのように異なる可能性がありますが?私のローカルマシンでは、それは渡します

+3

親指のルール:*信頼しない浮動小数点数* –

答えて

1

あなたのテストの構造を改善することができるかもしれません。モック&スタブを使用してではなく、状態変異(またはその欠如)をテストしてみ:

it 'could not update question' do 
    expect(Question).to_not receive(:update) # Depending on how your model gets updated 
    patch :update, id: question, question: attributes_for(:question, title: 'new valid title', body: 'new valid body'), format: :js 
end 
0

あなたはActiveSupport::Testing::TimeHelpers#travel

を使用することができ、このようなrails_helper.rbでそれを含める:

あなたのテストで
RSpec.configure do |config| 
include ActiveSupport::Testing::TimeHelpers 
... 

そして、 travel_to Time.nowを使用して時間を固定します。