Service Fabric Uygulama Sınıfı için Birim Testleri Yazma
Service Fabric Application sınıfı için birim testleri yazıyorum. Nasıl düzelteceğimi anlamadığım bazı hatalarla karşılaşıyorum. Sınıf tanımı şu türdedir:
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);
}
}
}
}
Uygulama aşağıdaki gibi tanımlanan bir test sınıfına sahiptir:
namespace SearchService.Tests
{
//[TestClass]
public class SearchServiceClassTest
{
[Fact]
public void SearchServiceClassConstructor()
{
var searchServiceClass = new SearchServiceClass();
Assert.True(searchServiceClass.IsDataJsonLoaded);
}
}
}
Şu hatayı alıyorum:
'SearchServiceClass.SearchServiceClass (StatelessServiceContext)' öğesinin gerekli biçimsel parametresi 'bağlamına' karşılık gelen herhangi bir bağımsız değişken yoktur.
Birisi bana bunu nasıl düzelteceğimi söyleyebilir mi?
Düzenleme: ServiceFabric.Mocks'a bakıyordum. Anladığım şey, MockStatelessServiceContextFactory.Default
sahte bir bağlam oluşturmak için öğesini kullanmam gerektiğidir . Bunu nasıl yaparım, aşağıdaki doğru yol mu ?:
var searchServiceClass = new SearchServiceClass(MockStatelessServiceContextFactory.Default);
Yanıtlar
Evet, aşağıdaki kodu kullanarak hizmetinizin test örneğini oluşturmak için ServiceFabric.Mocks kitaplığını kullanabilirsiniz :
var serviceInstance = new SearchServiceClass(MockStatelessServiceContextFactory.Default);
Default
Bağlama alternatif olarak, özelleştirilmiş bir örnek de oluşturabilirsiniz:
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);
Daha fazla bilgi için bu örnek teste ve buna bakın .