3
我有一個Apicontroller
它依賴於工作單元對象。如何編寫測試用例嘲諷ApiController
哪些依賴於在ApiController
構造函數中實現的工作單元。具有工作單元的嘲弄ApiController依賴關係
下面是代碼:
ApiController:
public class UserController : ApiController
{
public IUoW UoW { get; set; }
// GET api/user
public UserController(IUoW uow)
{
UoW = uow;
}
public IEnumerable<Users> Get()
{
return UoW.Users.Getall();
}
}
測試用例:
[TestMethod]
public void TestApiController()
{
var userManager = new Mock<IUoW>();
userManager.Setup(s => s.Users);
var controller = new UserController(userManager.Object);
var values = controller.Get();
Assert.IsNotNull(values);
}
的用戶類已在UoW.Users這裏提到是
public class UoW:IUoW,IDisposable
{
private MvcWebApiContext DbContext { get; set; }
protected IRepositoryProvider RepositoryProvider { get; set; }
private IRepository<T> GetStandardRepo<T>() where T : class
{
return RepositoryProvider.GetRepositoryForEntityType<T>();
}
public IRepository<Users> Users
{
get { return GetStandardRepo<Users>(); }
}
}
和Users
類本身就是
[Table("UserProfile")]
public class Users
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int UserId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string UserName { get; set; }
public string Password { get; set; }
[DataType(DataType.PhoneNumber)]
public long Mobile { get; set; }
}
當我嘗試調試測試用例,測試情況顯示對象UoW.Users
是UserController
空。它顯然沒有通過WebActivator
進行初始化,因爲global.asax沒有通過模擬調用。現在,在這種情況下如何編寫一個成功的測試場景,以便WebApicontroller
將帶有數據的用戶對象返回給我?
哦,好吧!是我不好我會在這裏包括用戶類。請稍等:) – Joy
@Joy - 不用擔心。答案已更新。附:類名「用戶」是一個有點混亂,建議你讓它單數「用戶」。 –
@Joy有效嗎? –