サードパーティのライブラリを照会するメソッドをテストしたいと考えています。ライブラリはIReadOnlyCollection
プロパティを持つオブジェクトを返します。モックメソッドの戻り値が読み取り専用のプロパティ
プロパティの値を設定するコンストラクタはありません。オブジェクトには私が偽装するためのインタフェースはありません。
私はMoq
を使用して、私が呼び出したサービスのインターフェイスをモックしましたが、プロパティを設定できないので、私は偽の戻り値を作成できません。
public interface IHitService {
public Hit GetHit();
}
public class Hit {
public Hit() {
}
public IReadOnlyCollection<string> Result { get; }
}
public class TestingClass {
public void MyTest() {
Hit hit = new Hit() {
// cannot set this property
Result = new List<string>() { "hello","goodbye" };
}
Mock<IHitService> service = new Mock<IHitService>();
service.Setup(c => c.GetHit).Returns(hit);
}
}
私のメソッドをテストするための戻り値を生成するにはどうすればよいでしょうか?ベースを隠すためにオブジェクトをnew
プロパティで折り返しても機能しません。
通常どのように設定されますか? –
それが設定されていないかどうかは重要ですか?その第三者のもの。あなたは通常、自分のコードだけをテストしません –
私がテストしている方法でデータを操作します。 'GetHit()'を呼び出し、 'Result'コレクションのデータを処理します。プロパティはもともとは 'IEnumerable'でしたが、最新のバージョンでは' ReadOnlyCollection'に変更されています。私はそれが図書館にどのように設定されているのか分かりません。それはいい考えです、私はソースコードをチェックします。 – hsimah