1

我对 nUnit 很陌生,一般测试,这是我的第一个测试方法。我希望我做 TDD,但为时已晚,我必须对现有代码进行单元测试。

我收到此错误:HttpContext 不可用。此类只能在 ASP.NET 请求的上下文中使用。

不引用服务的所有其他方法都可以通过测试。我如何解决它?

namespace MyWCFServiceTests
{
    [TestFixture]
    public class Class1
    {
        [Test]
        public void myMethod()
        {
            MyWCFService.Service1 wcf = new MyWCFService.Service1();
            wcf.MyMethod();
        }
    }
}
4

2 回答 2

1

您应该考虑使用其中一个 Mocking 框架(Moq、TypeMock 等)。这里有一篇文章解释了使用 Moq 模拟WCF 服务的基本概念

于 2013-10-15T23:19:10.933 回答
0

看起来您的服务需要 ASP.NET 托管。如果是这种情况,它取决于 HttpContext 并且您将无法模拟它。值得一提的是,这不是单元测试,而是功能/集成,因为您要测试整个 WCF 管道(序列化、网络堆栈、托管环境,可能还有存储层等)。不过,您有以下选择:

  • 在 IIS 上托管服务(就像您可能在生产中所做的那样)并让您仅测试常规 WCF 客户端

  • 尝试转换服务,以便在可能的情况下自行托管

  • 重构服务实现,以便您可以(单元)在没有 WCF 的情况下测试逻辑(您最终会遇到很多依赖项,但这是一件好事)

于 2013-10-16T02:29:48.910 回答