2012-02-22 3 views
3

私は、this question's受け入れ答えにコメントを投稿したい「はビューだから何をテストするつもりですか?今の後ろにコードを放棄しないことがありますか?」それはできるだけ早くあなたがMVCビューでヌル参照例外/インデックスの境界を守るべきでしょうか?

を追加すると私には思えることを指摘
<% if (Model.Thing == "abc") {} %> 

または

@if (Model.Thing == "abc") {} 

あなたのビューに、そこに爆破するために何かの可能性が存在し、その可能性はに対して守られなければなりません。

私がリンクしている質問に関しては、ヌルチェックで自分のビューをぶち壊すのではなく、コードビハインドでヌル参照例外の可能性を防ぐ必要があるという議論が見えました。部分的な見解の場合?ビュー自体の中で、1つの場所ではなく、部分的なビューがレンダリングされるかもしれない多数の場所に複数のヌルチェックを追加するほうが本当に良いでしょうか?あなたは値がnullであることを期待している場合

答えて

2

IMO、あなただけの理想的には、確実にあなたのアクションメソッドのためのユニットテストを持っている必要があり

など、OOB、あなたの意見では、など、ヌルに対してインデックスOOBを守る必要があります特定のモデル値はnull/in bounds /などではありません。値がnullになる可能性がある場合は、ビューでヌル・チェックが必要な場合があります。それ以外の場合は、無駄なコードです。

+0

フィードバックいただきありがとうございます。@olivehour私はあなたのガイドラインを受け入れることが有益になる習慣の変更を必要とすると思います。ビュー内で発生するヌル状態(oobなど)に対してガードを追加するのはとても魅力的で簡単ですが、私がここで受け取っている回答は非常に一貫しており、理性に立っています。 –

+0

ユニットテストを書いたら、それらの習慣が強化されます。特定の部分がnull/oobなどでない場合にシナリオをアサートする単体テストがあります。ヌルであると予想していないときに何かがnullだったことが分かった場合は、単体テストがありません。 – danludwig

+0

私はすでにユニットテストを大きく心掛けています。私は確信し、このタイプの小切手をレパートリーに追加します。 –

2

Webフォームのコードビハインドの考え方から離れてください。モデルデータのヌルチェックはコントローラで処理する必要があります。ビューには、その種のチェックのための最小限の(または、ない)ロジックが含まれている必要があります。

public ActionResult YourAction(YourModel ym) 
{ 
    if (ym.Thing != null) 
     return View(ym); 
    else 
     return View(); 
} 

また、データに対して行う必要のあるチェックのタイプは問わない。あなたのビューでそのように、それはモデルデータをチェックすることではぎりません。 MVCデザインでは、の関心事のすべての部分がです。

+0

それはコンパイルされません。私は、モデルのプロパティを使用する前に 'Model'がnullであるかどうかを確認する必要があるかどうか本当に尋ねています。 – tvanfosson

+0

@tvanfossonありがとう、修正されました。また、そのロジックをコントローラコード内に簡単に配置することもできます。私はちょうどそのビューがそう心配してはいけないと思う。 –

+0

私はMVCを使い始めましたが、ウェブフォームを知っていませんでした。ありがとう! –

1

モデルやモデルのプロパティをnullにする必要のある法的条件がない場合は、ユニットテストではなく、ビューではこれを実行する必要があります。モデルがヌルであるかヌルプロパティーを含むケースがある場合は、表示を調整できるように、このチェックをチェックしてください。ロジックの表示(一部はビジネスルールに関連する可能性があります)とは対照的に、ビジネスロジックに対するガードが必要です。

関連する問題