Menulis UnitTests untuk Kelas Aplikasi Service Fabric
Saya menulis pengujian unit untuk kelas Aplikasi Fabric Layanan. Saya mengalami beberapa kesalahan yang tidak saya mengerti bagaimana cara memperbaikinya. Definisi kelas adalah dari jenis:
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);
}
}
}
}
Aplikasi memiliki kelas pengujian yang didefinisikan sebagai berikut:
namespace SearchService.Tests
{
//[TestClass]
public class SearchServiceClassTest
{
[Fact]
public void SearchServiceClassConstructor()
{
var searchServiceClass = new SearchServiceClass();
Assert.True(searchServiceClass.IsDataJsonLoaded);
}
}
}
Saya mendapatkan kesalahan berikut:
Tidak ada argumen yang diberikan yang sesuai dengan 'konteks' parameter formal yang diperlukan dari 'SearchServiceClass.SearchServiceClass (StatelessServiceContext)'.
Bisakah seseorang memberi tahu saya cara memperbaikinya?
Sunting: Saya telah melihat ServiceFabric.Mocks. Apa yang saya pahami adalah bahwa saya perlu menggunakan the MockStatelessServiceContextFactory.Default
untuk membuat konteks tiruan. Bagaimana cara melakukannya, apakah mengikuti cara yang benar ?:
var searchServiceClass = new SearchServiceClass(MockStatelessServiceContextFactory.Default);
Jawaban
Ya, Anda dapat menggunakan pustaka ServiceFabric.Mocks , untuk membuat contoh uji layanan Anda dengan menggunakan kode berikut:
var serviceInstance = new SearchServiceClass(MockStatelessServiceContextFactory.Default);
Sebagai alternatif dari Default
konteksnya, Anda juga dapat membuat instance yang disesuaikan:
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);
Lihat tes sampel ini dan tes ini untuk informasi lebih lanjut.