說做setter注入,我有以下控制器我如何傳遞一個模仿的對象,當我在ASP.NET MVC控制器
public class UsersController : Controller
{
private IUsersRepository UsersRepository { get; }
public UsersController()
{
UsersRepository = DependencyResolver.Current.GetService(typeof(IUsersRepository)) as IUsersRepository;
}
public ActionResult Index()
{
MyUserDefinedModel data = UsersRepository.MyRepository();
return View(data);
}
}
現在我想嘲笑IUsersRepository
並把它傳遞給控制器我的測試腳本。
下面我的測試代碼
public class UsersListTest
{
private UsersController usersController = new Mock<IUsersRepository>();
private Mock<IUsersRepository> usersRepository = new UsersController();
[TestMethod]
public void TestMethod1()
{
//usersRepository.Setup(x => x.Get()).Returns(users);
}
}
至於因爲private IUsersRepository UsersRepository { get; }
私人的,我不能夠通過的IUsersRepository
模擬。
在這種情況下編寫單元測試和模擬會是個好主意。
爲什麼你不註冊你的模擬對象到DI容器?它可能是最簡單的解決方案.... –