2016-09-12 10 views
1

ユニット・テストでは新しいです。サービス層のユニット・テスト・ビジネス・ロジック

サービス層を: は、私は(リポジトリパターンを介して)私はすべてのビジネスロジックおよびデータベースへのアクセスを行うサービス層とMVCプロジェクト

が、私はそのように、私のビジネスロジックをテストユニットにプロジェクトを作成し開発しています例えば、ロジック私がテストしたい:

public static bool HasPermissionToSomething(MyDomain domain) 
{ 
    if((domain.prop1 == true || domain.prop3 == false) && domain.prop2 == false) 
     return true; 

    return false;  
} 

だから私は(xUnitフレームを使用して)そのようなユニットテストを作成し

[Fact] 
public void HasPermissionToSomethingTest() 
{ 
    var domain = MockDomain(); 

    var hasPermission = MyService.HasPermissionToSomething(domain); 

    Assert.Equal(hasPermission, true); 
} 

が、その行くです私のサービス層をテストするアプローチ?私のテストはいいですか?

ありがとうございました

答えて

1

あなたは正しい方向に向かっています。ユニットテストを少し強化して、テストしているものをさらに宣言する必要があります。

[Fact] 
public void HasPermissionToSomethingTest() 
{ 
    var domain = MockDomain {prop1 = true, prop2 = true, prop3=true}; 

    var hasPermission = MyService.HasPermissionToSomething(domain); 

    Assert.Equal(hasPermission, true); 
} 

また、trueまたはfalseの戻り値をトリガーするさまざまな条件をカバーするために、より多くの単体テストが必要です。このテストでは、Xunitの理論が非常に多くのテストを必要としないように役立ちます。

[Theory, InlineData(true, true, true), InlineData(true, true, false)] 
    public void ShouldGrantPermission(bool prop1, bool prop2, bool prop3) 
    { 
     var domain = MockDomain {prop1 = prop1, prop2 = prop2, prop3 = prop3}; 

     var hasPermission = MyService.HasPermissionToSomething(domain); 

     Assert.Equal(hasPermission, true); 
    } 
関連する問題