サービスの背後にあるロジックをテストする必要がある場合は、以下に示すような単純な単体テストを作成できます。
public class Service1 : IService1
{
public string GetData(int value)
{
return string.Format("You entered: {0}", value);
}
}
//Tests
[TestFixture]
public class MyService_Test
{
[Test]
public void GetData_should_return_entered_string()
{
Service1 service = new Service1();
Assert.AreEqual("You entered: 1", service.GetData(1));
}
}
また、統合全体をテストしたい場合は、次の統合テストを作成できます。簡単に言うと、サービスを自己ホストとして実行し、_proxy を使用してサービス メソッドを実行する必要があります。このようなテストは、カスタム メッセージ インスペクター、エラー ハンドラーなどの拡張ポイントをテストする必要がある場合に役立ちます。
private ITestService _proxy;
private ServiceHost _host;
[SetUp]
public void Initialize()
{
const string baseAddress = "net.pipe://localhost/TestService";
_host = new ServiceHost(typeof(TestService), new Uri(baseAddress));
var factory = new ChannelFactory<ITestService>(new NetNamedPipeBinding(),
new EndpointAddress(baseAddress));
_host.Open();
_proxy = factory.CreateChannel();
}
リンク:
統合テスト WCF サービス