c# - 用于测试的假 Http 上下文

标签 c# unit-testing mocking repository moq

<分区>

Possible Duplicate:
How do I mock the HttpContext in ASP.NET MVC using Moq?

我的一个 DLL 有这样的方法

public void RegisterPerson(Person p,  HttpContext context)
{
    //extract Ip
    person.Ip=context.Request.UserHostAddress; 

    //Dome something Else
}

在我的测试中,我想创建一个假上下文并将其传递给方法,如下所示

 [TestMethod]
  public void InsertPerson()
  { 
        Person p= new Person();
        _service.RegisterPerson(p, /*Fake context here*/);
  }

请建议我如何执行此操作。

最佳答案

很难合理地模拟 HttpContext 和相关类的非 *Base 版本。考虑将您的代码切换为使用 *Base 类,这样您就可以实际模拟它们。您可以使用 HttpContextWrapper ( http://msdn.microsoft.com/en-us/library/system.web.httpcontextwrapper.aspx ) 轻松地将 HttpContext 转换为 *Base 版本,但是没有内置的反向方法。

在您的特定情况下,考虑传递调用真正需要的信息(即 context.request.UserHostAddress)而不是整个 HttpContext 对象。

关于c# - 用于测试的假 Http 上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8011592/

相关文章:

c# - 分配新实例后 INotifyPropertyChanged 不起作用

c# - 如何在节点树中找到 NodeData?

c# - 如何在 C#/.NET 中找到本地计算机的 FQDN?

javascript - 在 yeoman angularjs 中使用模拟文件夹进行 karma 测试

java - 当单元测试方法具有断言而不是异常时,最佳实践是什么?

c# - 单元测试中的不确定性

python - 如何使用mock.patch覆盖Django View 进行测试?

unit-testing - 如何比较/匹配模拟中的闭包?

Delphi Spring Mock 对函数的引用

c# - Entity Framework CreateObjectset 附加方法不更新