为Service Fabric应用程序类编写UnitTests



我正在为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);
}
}
}

我得到以下错误:

没有给出与所需形式相对应的参数的参数'context'"SearchServiceClass.SearchServiceClass(StatelessServiceContext("。

有人能告诉我如何解决这个问题吗?

编辑:我一直在看ServiceFabric.Mocks。我所了解的是,我需要使用MockStatelessServiceContextFactory.Default来创建一个mock上下文。我该如何做到这一点,以下是正确的方法吗?:

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);

有关详细信息,请参阅此示例测试和此测试。

最新更新