gpt4 book ai didi

c# - ServiceStack:单元测试 WebServices

转载 作者:行者123 更新时间:2023-11-30 17:02:59 25 4
gpt4 key购买 nike

我是 ServiceStack 的新手,我正在尝试了解不同部分如何工作以及如何组合在一起。这是我正在玩的简单服务:

[Route("/welcome")]
[Route("/welcome/{Name}")]
public class Welcome
{
public string Name { get; set; }
}

public class WelcomeResponse
{
public string Result { get; set; }
}

public class WelcomeService : Service
{
public object Any(Welcome request)
{
return new WelcomeResponse { Result = "Welcome " + request.Name };
}
}

...这是单元测试:

[TestFixture]
public class WelcomeServiceTest
{
[Test]
public void Welcome()
{
var service = new WelcomeService();
var response = (WelcomeResponse) service.Any(new Welcome { Name = "Gonzo" });
Assert.That(response.Result == "Welcome Gonzo");
}
}

在上面的单元测试类中,我将服务类用作普通 C# 类……当然单元测试成功了。但是,如果我像这样重写单元测试(基于我在 Internet 上找到的示例)会怎样?

[TestFixture]
public class WelcomeServiceTest
{
[Test]
public void Welcome()
{
var context = new Mock<IRequestContext>();
context.SetupGet(f => f.AbsoluteUri).Returns("localhost:8888/welcome");

var service = new WelcomeService {
RequestContext = context.Object
};

var response = (WelcomeResponse) service.Any(new Welcome { Name = "Gonzo" });
Assert.That(response.Result == "Welcome Gonzo");
}
}

结果完全一样...那我为什么要使用模拟的东西呢?

最佳答案

查看此 previous answer for different Unit Testing options in ServiceStack .

这里还有一些 Integration Testing 的例子.你选择的是你想要什么以及你想要测试多少的偏好,例如集成测试有效地测试托管在 ServiceStack 实例中的实时服务,包括任何自定义过滤器或插件。单元测试仅测试您的服务实现,这更容易和更快。

关于c# - ServiceStack:单元测试 WebServices,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19104380/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com