5

Test :: Unitには明らかにassert_falseがありません。アサーションを拡張してファイルを追加すると、どのように追加されますか?config/initializers/assertions_helper.rbRuby Test :: Unitアサーションを拡張してassert_falseを含めるには?

これを行う最も良い方法ですか?私はtest/unit/assertions.rbを変更したくありません。

ところで、私は重複しているとは思わない。私はassert_equal false, something_to_evaluateを使っていました。このアプローチの問題点は、誤ってassert false, something_to_evaluateを使用することです。これは常に失敗し、エラーや警告を投げず、バグをテストに招待します。

+1

@B七、あなたは、この[リンク](http://www.natontesting.com/2009/07/21/add-assert_false-to-rubys-testunit/)を見ましたか? –

+0

どのようなリンク? .... –

+1

http://www.natontesting.com/2009/07/21/add-assert_false-to-rubys-testunit/、作業リンクはハイパーリンクですが、上記と同じです。 –

答えて

3

ちょうどあなたが主張しているものの前に強打を追加します。

assert !(something_false) 
9

あなたはMiniTest(ルビー1.9+で置き換えテスト::ユニット)を使用している場合は、あなたがrefuteメソッドを使用することができ、 assertの逆数です。

+0

これは正解です。 – joncodo

4

、それは他のすべてのアサーションと一貫性だし、それはまた、通常より(if !condition代わりのunlessを使用するのと同様)のセマンティクスに合わせていますので、個人的に、私は名前assert_falserefuteより良いを見つけます。あなたが同じように感じるとassert_falseをしたい場合は

test/test_helper.rbでそれを追加します。

class ActiveSupport::TestCase 

    ... 

    def assert_false(test, message="Expected: false. Actual: #{test}.") 
    assert_equal false, test, message 
    end 

end 

EDITは:!testがnilである場合assert !test(他の場所で提案)が動作しないことに注意してください(nilはtrueで、我々はおそらくassert_false(nil)が失敗することを望むでしょう)。したがって、これはfalseと直接比較しています。

4

Rails 4は、あなたが望むようにassert_notを持っています。

test "requires valid url" do 
    @mymodel.url = "bogus!" 
    assert_not @mymodel.valid? 
end 
関連する問題