2016-11-28 23 views
1

私は部品番号を使用して、以下の方法を模擬しようとしている:それはこのように初期化されます一般的なリポジトリのモック方法

public interface IGenericRepository<TEntity> where TEntity : class 
{ 
    ... 

    IEnumerable<TEntity> Get(Expression<Func<TEntity, bool>> filter = null, 
     Func<IQueryable<TEntity>, IOrderedQueryable<TEntity>> orderBy = null, string includeProperties = ""); 

} 

_invoiceRepository = new SqlGenericRepository<InvoiceEntity>(Context); 

パラメータの関係なく、この方法は、常に返す必要がありますリスト。

私は

_invoiceRepositoryMock.Setup(m => m.Get(It.IsAny<>()).Returns(...) 

_invoiceRepositoryMock.Setup(m => m.Get(It.IsAny<Expression<Func<InvoiceEntity, bool>>>())).Returns(...) 

を試みたが、両方が動作しませんでした。

答えて

1

を想定すると、 210

その後セットアップは

_invoiceRepositoryMock 
    .Setup(m => m.Get(
     It.IsAny<Expression<Func<InvoiceEntity, bool>>>(), 
     It.IsAny<Func<IQueryable<InvoiceEntity>, IOrderedQueryable<InvoiceEntity>>>(), 
     It.IsAny<string>())) 
    .Returns(...); 

以上の特定

_invoiceRepositoryMock 
    .Setup(m => m.Get(It.IsAny<Expression<Func<InvoiceEntity, bool>>>(), null, string.Empty)) 
    .Returns(...); 
+0

「特定の呼び出し」に ')'がありません( '.Returns'の前にあります)。しかし、それは働いている。ありがとう! – mosquito87

+0

固定。喜んで助けてください。ハッピーコーディング!!! – Nkosi

1

あなたの方法がある場合:

IEnumerable<TEntity> Get(
    Expression<Func<TEntity, bool>> filter = null, 
    Func<IQueryable<TEntity>, IOrderedQueryable<TEntity>> orderBy = null,  
    string includeProperties = ""); 

あなたのモックのようなものでなければならない:

_invoiceRepositoryMock.Setup(m => m.Get(
    It.IsAny<Expression<Func<InvoiceEntity, bool>>>(), 
    It.IsAny<Func<IQueryable<InvoiceEntity>, IOrderedQueryable<InvoiceEntity>>>(), 
    It.IsAny<string>())).Returns(...) 
+0

TEntityは、この文脈では不明であることができます。 – mosquito87

+1

私は自分の答えを更新しました。 TEntityをInvoiceEntityで置き換えてください。 –

0

方法のための4つの引数があるとして、あなたはplsは4つの引数を与えてみてください、このようにしてみてくださいことができますモックでも_invoiceRepositoryMock.Setup(m => m.Get(It.IsAny<>(),It.IsAny<>(),It.IsAny<>(),It.IsAny<>()).Returns(...