2016-05-17 13 views
0

私のソリューションでは、TopShelfサービスを追加しました。私はいくつかの単体テストを書いており、このサービスを設定するために書いた機能を分離するために必要なことを模索しようとしています。カスタムTopShelfセットアップコードのユニットテスト

はこれまでのところ、私はHostControlインターフェースStart()Stop()機能を嘲笑しているが、私はサービスを実行するために私のユニットテストを実行したとき、私はTopshelfExitCodeとして返さAbnormalExitを取得します。

誰もがこの分野での経験を持っていて、私のテスト要件を達成するための最善の方法を模索するためのアドバイスや助言が正しい方向に向いているかどうか疑問に思っていました。

私のテスト・セットアップは、現在次のようになります。

ServiceControlMock = new Mock<ServiceControl>(); 
ServiceControlMock.Setup(m => m.Start(It.IsAny<HostControl>())).Returns(true); 
ServiceControlMock.Setup(m => m.Stop(It.IsAny<HostControl>())).Returns(true); 

serviceExitCode = MyStaticServiceHost.RunService(ServiceControlMock.Object); 

そして、私は次のテストがあります。私の提案ではなく、独自の偽物を作ることであろう事前

答えて

0

ServiceControlMock.Verify(m => m.Start(It.IsAny<HostControl>()), Times.Once); 
Assert.AreEqual(TopshelfExitCode.Ok, serviceExitCode); 

感謝をここで嘲笑する

必要なインターフェイスを実装しているカスタムコントロールを実装したServiceControlFakeを作成します。その後、あなたはそれがどこに呼び出され、あなたが何を返すことができるかを見ることができます。

可能であれば、ServiceControlインターフェイスを最小使用関数に減らすことも考えられます。これにより、偽の実装が簡略化されます。

何が起こったかを知るときは、問題が軽微であればモックに戻ることができます。私は個人的に偽のものを好みます。

希望します。

関連する問題