0

我在使用 Rhino Mocks 进行部分模拟时遇到问题:

var authentication = (FormsAuthenticationService)_mocks.PartialMock(
  typeof(FormsAuthenticationService));
Expect.Call( delegate{ authentication.SetAuthCookie(null, null); }).IgnoreArguments();

..我在“期望”上得到 NullReferenceException。线..

我将添加该FormsAuthenticationService工具IAuthentication

4

1 回答 1

1

您尝试模拟物理类而不是接口是否有充分的理由?我问这个是因为模拟 FormsAuthenticationService 存在 2 个潜在问题:

  1. 该类可能没有默认的无参数构造函数(在这种情况下,您需要指定 mocks.PartialMock 的重载方法)。

  2. SetAuthCookie 必须是虚拟的。模拟框架通常只能模拟非密封类,并且只能模拟此类的虚拟成员。

为了解决这些问题,我建议改为模拟 IAuthentication。模拟接口没有这些限制。这是您要编写的代码:

var authentication = _mocks.DynamicMock<IAuthentication>();
Expect.Call(() => authentication.SetAuthCookie(null, null)).IgnoreArguments();
于 2008-11-19T15:11:23.943 回答