【发布时间】:2021-03-27 00:16:30
【问题描述】:
我正在为 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)'。
谁能告诉我如何解决这个问题?
编辑:我一直在查看 ServiceFabric.Mocks。我的理解是我需要使用MockStatelessServiceContextFactory.Default 来创建一个模拟上下文。我该怎么做,以下是正确的方法吗?:
var searchServiceClass = new SearchServiceClass(MockStatelessServiceContextFactory.Default);
【问题讨论】:
-
SearchServiceClass的构造函数只有一个参数,所以在创建它的对象时需要传递它。因为,你不能不创建StatelessServiceContext的对象,所以你应该在调用构造函数时使用模拟。 -
如果你不想默认行为,这是正确的方法。否则,您可以使用带有所有必需参数的
MockStatefulServiceContextFactory.Create()创建一个新的MockStatefulServiceContextFactory。根据代码示例,使用默认值是可以的。
标签: c# .net unit-testing moq azure-service-fabric