c# - 为 Service Fabric 应用程序类编写单元测试
问题描述
我正在为 Service Fabric 应用程序类编写单元测试。我遇到了一些我不明白如何解决的错误。类定义是这样的:
namespace SearchService
{
internal sealed class SearchServiceClass : StatelessService
{
//variables defined followed by constructor
private string jsonStr;
public SearchServiceClass(StatelessServiceContext context)
: base(context)
{
//constructor stuff
}
public bool IsDataJsonLoaded
{
get
{
return !(jsonStr == null);
}
}
}
}
该应用程序有一个定义如下的测试类:
namespace SearchService.Tests
{
//[TestClass]
public class SearchServiceClassTest
{
[Fact]
public void SearchServiceClassConstructor()
{
var searchServiceClass = new SearchServiceClass();
Assert.True(searchServiceClass.IsDataJsonLoaded);
}
}
}
我收到以下错误:
没有给出与“SearchServiceClass.SearchServiceClass(StatelessServiceContext)”所需的形式参数“context”相对应的参数。
有人可以告诉我如何解决这个问题吗?
编辑:我一直在看 ServiceFabric.Mocks。我的理解是我需要使用MockStatelessServiceContextFactory.Default
来创建一个模拟上下文。我该怎么做,以下是正确的方法吗?:
var searchServiceClass = new SearchServiceClass(MockStatelessServiceContextFactory.Default);
解决方案
是的,您可以使用ServiceFabric.Mocks库,通过以下代码创建服务的测试实例:
var serviceInstance = new SearchServiceClass(MockStatelessServiceContextFactory.Default);
作为Default
上下文的替代方案,您还可以构建自定义实例:
var newUri = new Uri("fabric:/MockApp/OtherMockStatelessService");
var serviceTypeName = "OtherMockServiceType";
var partitionId = Guid.NewGuid();
var replicaId = long.MaxValue;
var context = new MockCodePackageActivationContext("fabric:/MyApp", "MyAppType", "Code", "Ver", "Context", "Log", "Temp", "Work", "Man", "ManVer");
var context = MockStatelessServiceContextFactory.Create(context, serviceTypeName, newUri, partitionId, replicaId);
var serviceInstance = new SearchServiceClass(context);
推荐阅读
- r - 使用正则表达式拆分 R 中的列
- neo4j - 在 2 个节点之间创建关系
- css - 打开时将内容推送到下方的下拉菜单
- next.js - 如何在 relay-nextjs 中使用 next-auth jwt?
- c# - Request.Form[""] 在 foreach 循环中返回 null
- c# - 如何忽略某些类型的 UI 元素或使用 MouseButtonDown 进行图层?
- python - Django表单根据布尔字段使字段只读
- c# - 反序列化字典得到正确但略有不同的值
- android - adb shell android上的ncurses
- android - Xamarin:已安装的模拟器不会显示在 VS 的“运行”按钮上