【发布时间】:2025-12-14 02:10:01
【问题描述】:
我有一个类的构造函数如下:
public class SsoAuthenticationService : ISsoAuthenticationService
{
public SsoAuthenticationService(ILoginManager manager)
{
_manager = manager;
}
}
管理器类也有这样的构造函数:
public class LoginManager:ILoginManager
{
private ILoginRepository login;
public LoginManager(ILoginRepository loginRepository)
{
login = loginRepository;
}
}
我正在尝试针对 SSoAuthenticationService 类编写单元测试
public void CreateLogin_Returns_Login()
{
//arrange
var mocManager = new Mock<ILoginManager>();
ILoginManager m = mocManager.Object;
//fails at the next line
var svc = new SsoAuthenticationService(mocManager.Object);
var request = new CreateSsoLoginRequest()
{
EmailAddress = "",
Password = "",
SecurityQuestionAnswer = "",
SecurityQuestionId = 0,
SiteIdentifier = "",
Username = ""
};
//act
var response = svc.CreateSsoLogin(request);
//assert
response.Should().NotBeNull();
}
当它尝试实例化 SsoAuthenticationService 类 ("Value cannot be null.\r\nParameter name: value") 时会出错,我认为问题在于我还需要模拟 IRepository 类,但我不确定模拟代码应该是什么样子。
编辑:完整的异常信息
“Progressive.Sso.WebServices.SsoAuthenticationService”的类型初始化程序引发了异常。
值不能为空。\r\n参数名称: 值
在 Progressive.Sso.WebServices.SsoAuthenticationService..ctor(ILoginManager 管理器)
在 Progressive.Sso.Tests.Service_Methods.ServiceTest.CreateLogin_Returns_Login() in d:\tfs\sso\Dev\Dev\Src\SSO Web Services\Progressive.Sso.Tests\Service Methods\ServiceTest.cs:line 29
谁能帮帮我?
【问题讨论】:
-
您能否提供完整的异常信息,如堆栈跟踪。另外 CreateSsoLogin 对
ILoginManager做了什么? -
调用 CreateSsoLogin 没有达到,实例化 SsoAuthenticationService 时代码失败
-
你有上面没有显示的静态字段吗?
-
非常有预见性 - aqwert,在我发布答案后才注意到您的评论。静态方法是问题所在。
标签: c# unit-testing moq