私のプロジェクトでは、統合テストに使用されるテストデータのリポジトリがあります。このリポジトリを使用して、テストされるメソッドによって呼び出されるモックの作業単位を作成します。私はアサーションを実行するアクセス権を得ようとする際に問題が発生しています。模擬オブジェクトからプライベートメンバーにアクセス
私が主張したいデータがsource
の内部に保持されて、私は反射が、以下の戻りnull
を使用して、非パブリックメンバーへのアクセスに見てきた:
PropertyInfo pInfo = vms.GetType().GetProperty("SourceInterface", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
SourceInterface
をsource
に置き換えると、nullが返されます。
SourceInterface
オブジェクトをsource
から取得する方法はありますか?
EDIT: 試験方法:試験下
[TestMethod]
public void GetAllVMS_VMSReturned()
{
IEnumerable<SourceInterface> vms = controller.GetAllVMS();
Assert.IsTrue(vms.ToList().Count > 0); //Throws NullReferenceException
}
方法:
public IEnumerable<SourceInterface> GetAllVMS()
{
return database.SourceInterfacesRepository.GetAll();
}
テストコールと一緒にテスト中のメソッドを追加します – Novastorm
コードサンプルに基づいて、 'vms'はIEnumerableです。カスタムメソッドを期待するのは絶対に意味がありません。おそらくコピー貼りが悪いと思われます。[MCVE]が妥当かどうかを確認してください。 –
質問には何も追加する必要はありません。おそらく私が提供できる他の情報は、テストが行われる前に注入された作業単位(この例ではデータベース)のセットアップだけです。 – Novastorm