2011-04-04 13 views
0

EF 4.0でASP.MVC 3アプリの単体テストを書いていますが、テスト中にSystem.NullReferenceExceptionに問題があります。サービスレイヤでこのメソッドをテストしています。ユニットテストNullReferenceException文字列プロパティの問題があります

public IQueryable<Pricing> GetPricing(int categoryID) 
    { 
     var query = from t in _repository.GetAllPricing() 
        where t.FK_Category == categoryID 
        where t.Status.Equals("1") 
        select t; 
     return query; 
    } 

うまくいきました。しかし、ステータスがヌルに等しく、私が

svc.GetPricing(1).Count(); 

をテストメソッドで呼び出すと、例外がスローされます。私は偽のリポジトリと他の(空の)文字列をうまく使っています。

pricing.Status = null;の代わりにpricing.Status = Convert.ToString(null);を使用しようとしましたが、これはどちらでも動作しません。

答えて

1

問題は、ヌル参照で.Equalsを呼び出すことができないことです。これは経験したようにNullReferenceExceptionを投げます。今

public IQueryable<Pricing> GetPricing(int categoryID) 
{ 
    var query = from t in _repository.GetAllPricing() 
       where t.FK_Category == categoryID 
       where t.Status == "1" 
       select t; 
    return query; 
} 
+0

ありがとう、テストパス:

代わりに、等価演算子を呼び出すことができます。ですから、Equalsとwhen ==を使うときは?アプリケーションが正常に機能した場合、テストのみが失敗します。 – xxviktor

+0

variable.Equals(other)はUNLESS変数が動作する(またはnullになる)可能性があります。私は==安全面にいることに固執します。 –