2016-04-27 20 views
3

私は次のように定義されたインタフェースがあります場合は、しかし、私のテストではMOQ:一般的なインタフェースを継承するモックインターフェイス

public interface IAccountRepository : IBaseRepository<AccountModel> 
{ 
} 

public interface IBaseRepository<T> 
{ 
    IQueryable<T> All(); 
} 

その後を、私はこれを拡張するインタフェースを持っていますIAccountRepositoryを偽り、IAccountRepository.All()の設定を呼び出すと、MoqはReturnsメソッドを使用して結果を定義することができません。

var mockAccountRepository = new Mock<IAccountRepository>(); 
mockAccountRepository.Setup(x => x.All()).Returns(...); // "Returns" can't work here for some reason. 

ジェネリックインターフェイスを継承するインターフェイスでベースメソッドをモックできますか?

+0

どのようなエラーが表示されますか? 'IQueryable 以外のものを返そうとしていますか? –

+1

'Moqは返品メソッドを使用して結果を定義することを許可しません。 ' それはどういう意味ですか?例外をスローする、コンパイルエラー?より具体的にする必要があります。 –

+0

補足として、私はリポジトリから 'IQueryable'を返すためのいくつかの研究を行います - それは利点がありますが、たくさんのリスクを作ります。 –

答えて

4
mockAccountRepository.Setup(x => x.All()).Returns(new List<AccountModel>().AsQueryable()); 
+0

@DStanley、そうです、私は '.AsQueryable()'を追加しました –

+0

これは私が何を試していたのか何らかの理由でIntellisenseとコンパイルが失敗したことです。ランダムに作業を始めました。私はそれをVS flukeまでチョークしています。 –

関連する問題