无法获得默认构造函数

Har*_*a W 5 c# asp.net asp.net-mvc constructor default-constructor

我在运行单元测试项目时遇到以下问题。

无法获得类 ******** 的默认构造函数

[TestClass]
public class PersonRegistration
{
    private ILoggingService _loggingService;
    private IUserManager _userManager;
    public PersonRegistration(IUserManager userManager, ILoggingService loggingService)
    {
        this._userManager = userManager;
        this._loggingService = loggingService;
    }
    [TestMethod]
    public void TestMethod1()
    {
        RegisterBindingModel model = new RegisterBindingModel();
        AccountController ac = new AccountController(_userManager, _loggingService);
        model.UserName = "test123@gmail.com";
        var result = ac.Register(model);
        Assert.AreEqual("User Registered Successfully", result);
    }
Run Code Online (Sandbox Code Playgroud)

如何解决这个问题。一些答案说要使用无参数构造函数。但在这里我需要参数。

注册绑定模型()

public class RegisterBindingModel
{
    public RegisterBindingModel();
    [Display(Name = "User name")]
    [Required]
    public string UserName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

问题 图片

Ash*_*man 2

您应该使用像Moq这样的模拟框架。

例子:

[TestClass]
public class PersonRegistration
{

    [TestMethod]
    public void TestMethod()
    {
        RegisterBindingModel model = new RegisterBindingModel();

        var mockService = new Mock<ILoggingService>();//Mock
   //Do something as per your requirement 
   //var reg= new List<RegisterBindingModel >(); // provide some sample list 
    //mockService .Setup(r => r.GetAll=()).Return(reg);

        var mockManager = new Mock<IUserManager>();//Mock

    //Do something as per your requirement 
    //var user= new List<User>(); // provide some sample list 
    //mockManager .Setup(r => r.GetAll=()).Return(user);

        AccountController ac = new AccountController(mockManager.Object, mockService.Object);
        model.UserName = "test123@gmail.com";
        var result = ac.Register(model);
        Assert.AreEqual("User Registered Successfully", result);
    }
}
Run Code Online (Sandbox Code Playgroud)

您可以通过链接和链接获取帮助。