單元測試我的asp.net MVC web應用程序,我想嘲笑我的IGenericRepository(我使用Moq)。嘲笑一個通用的存儲庫方法
必須被嘲笑看起來像這樣的方法:
useraccountRepository = new Mock<IGenericRepository<Useraccount>>();
現在我想告訴起訂量,當:
IEnumerable<TEntity> Get(Expression<Func<TEntity, bool>> filter = null,
Func<IQueryable<TEntity>, IOrderedQueryable<TEntity>> orderBy = null, string includeProperties = "");
我已經嘲笑庫沒有任何問題我的界面的Get方法被調用,應該返回一個使用清單列表:
useraccountRepository.Setup(r => r.Get(u => u.Email == useraccount.Email && u.Password == useraccount.Password)).Returns(useraccounts);
I thi nk在我的第二個lambda中有一個錯誤,因爲這個工作原理如下:
useraccountRepository.Setup(r => r.Get(null, null, "")).Returns(useraccounts);
但是我的錯誤在哪?
什麼也可以工作:
useraccountRepository.Setup(r => r.Get(u => u.Email == useraccount.Email
&& u.Password == useraccount.Password, null, "")).Returns(useraccounts);
它看起來像默認參數值在我假裝不適用。這是爲什麼?
如果我使用
useraccountRepository.Setup(r => r.Get(u => u.Email == useraccount.Email
&& u.Password == useraccount.Password, null, "")).Returns(useraccounts);
無論如何,然後在我的控制器方法拋出時,Get消息被稱爲異常:
private bool validateUser(Useraccount useraccount)
{
try
{
Useraccount useraccountLogin = UnitOfWork.UseraccountRepository.Get(
u => u.Email == useraccount.Email && u.Password == useraccount.Password).Single<Useraccount>();
return (useraccountLogin != null);
}
catch (Exception exc)
{
return false;
}
}
哪裏是我的錯誤呢?
預先感謝您。 Michael
**什麼**不起作用,哪些**異常被拋出?你像一個專業人士一樣瀏覽具體細節... – 2013-02-18 17:58:40
對不起,讓你感到困惑。 如果我的單元測試的ValidateUser(...)內 - 方法被調用(從一個控制器的方法的內部)拋出異常,其中UseraccountRepository.Get(...)被調用: [System.InvalidOperationException] = {」序列不包含元素「}。 「at System.Linq.Enumerable.Single [TSource](IEnumerable'1 source)\ r \ n at ...」。 – mosquito87 2013-02-18 19:39:42