【问题标题】:NUnit testing on WCFWCF 上的 NUnit 测试
【发布时间】:2013-10-15 20:09:41
【问题描述】:

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

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

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

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

【问题讨论】:

  • 就像在下面的答案中提到的那样,您应该模拟服务实例。在您的测试中,您应该关注内部逻辑(对于客户端和服务(通常是具有不同测试项目的两种不同解决方案))。如果您不熟悉单元测试,我会选择 Moq。

标签: c# wcf nunit


【解决方案1】:

您应该考虑使用其中一种 Mocking 框架(Moq、TypeMock 等) 这里有一篇文章解释了mocking WCF services with Moq的基本概念

【讨论】:

    【解决方案2】:

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

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

    • 尝试转换服务,以便尽可能自托管

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-17
      • 2012-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多