gpt4 book ai didi

c# - 无法获取默认构造函数

转载 作者:太空狗 更新时间:2023-10-30 01:00:40 26 4
gpt4 key购买 nike

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

Unable to get Default Constructor For class ********

[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);
}

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

注册绑定(bind)模型()

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

问题 Image

最佳答案

我刚刚在单元测试中对此进行了测试。

添加

public PersonRegistration()
{
}

它应该运行良好。

单元测试类不需要构造函数。如果您使用的是像 Moq 这样的模拟框架,那么我会使用工厂来返回我正在测试的类的相关最小起订量。

 public ILoggingService ReturnMockLoggingService()
{
var mockService = new Mock<ILoggingService>();
return mockService.Object;
}

然后在测试夹具中。

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

var logService = MockFactory.ReturnMockLoggingService();
var userService = MockFactory.ReturnMockUserService();
AccountController ac = new AccountController(userService, logService);

model.UserName = "test123@gmail.com";
var result = ac.Register(model);
Assert.AreEqual("User Registered Successfully", result);
}

如果您不使用模拟,则只需在测试中实例化用户和日志服务或创建一个 SetUp。

[ClassInitialize]
public void SetUp()
{
_loggingService = new LoggingService();
_userManager = new UserManager();
}

希望对您有所帮助。

关于c# - 无法获取默认构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44300843/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com