の残りの部分へのアクセスを持たずに、私はクラスPersonとインターフェースがあります。しかし、私は「ドン、書き方C#のNUnitのテストコード
interface IService
{
double GetAccDetails(int personId);
}
public class Person
{
private int _personId;
private IService _service;
public Person(int personId, IService service)
{
_personId= personId;
_service = service;
}
public double Amount {get; set;}
public void UpdateBackingAcc()
{
Amount = _service.GetAccDetails(_personId);
}
}
をそして私はNUnitのテストとコードのこの部分をカバーするために持っていますサービスにアクセスできますが、公開したコードにのみアクセスできます。
だから私の質問は以下のとおりです。
私はユニットテストを書くためにそれをmoqueべきでしょうか?はいの場合、それは常に私に静的な価値を返すので、私はそれの利益があまり見えません。
指定されたインターフェイスに対してどのようなテストを作成できますか?私は、テストの1つが
personId1
を使用して静的な値を取得しようとする可能性があると仮定し、personId2
を使用して、別の値を取得し、その量が更新されたかどうかを確認します。そうだとすれば、これは単体テストでしかないかもしれません。
おそらくそれは値が負であるかどうかをチェックすることは理にかなって...多分も値が0 ...
ある他の任意のアイデア?
私は 'がexception'は' Person'クラスの責任ではありません例外だと思います。 – Fabio
@Fabioあなたは絶対に正しいです!理論的には、サービスが無効なIdを受け取り、例外をスローする可能性を考えようとしていました。編集された回答をご覧ください。 – dee
いいえ@dee、私の要点は 'try .. catch'はまったく必要ないということでした。もちろん、テストする必要はありません。サービスがスローされる場合は投げてください。 – Fabio