【发布时间】:2018-11-02 03:29:36
【问题描述】:
我正在尝试模拟 System.Security.Principal.IIdentity。但是,我特别想在测试期间替换特定的Claim。我遇到的问题是,虽然我可以模拟和替换接口的元素,但我无法访问该类,直到它被解决并在方法中强制转换。
这是我的控制器构造函数:
public MyController(IIdentity identity)
{
_userIdentity = identity as ClaimsIdentity;
这是我试图模拟声明的代码:
var mockClaim = new Claim("test", "test");
IIdentity identity = Substitute.For<IIdentity>();
((ClaimsIdentity)identity).Claims.Returns(new List<Claim>() { mockClaim });
显然,这不起作用,因为在这种情况下,identity 实际上并不是 IIdentity。虽然我问的是与此问题相关的特定问题,但我更一般的问题是:是否有任何技术可以在接口模拟中模拟接口的特定类实例?
(我意识到我可以简单地将这一切包装在我自己的接口和包装类中——但这感觉有点矫枉过正)。
【问题讨论】:
标签: c# .net unit-testing mocking nsubstitute