2017-05-09 18 views
1

私はクラスライブラリを抱えている、それは以下のモデルと方法の問題C#

モデル含まれています

public class Employee { 
    public int EmpId { get; set; } 
    public string Name { get; set; } 
} 

を優先mothod:

public class EmployeeService { 
    public List<Employee> GetEmployee() { 
     return new List<Employee>() { 
      new Employee() { EmpId = 1, Name = "John" }, 
      new Employee() { EmpId = 2, Name = "Albert John" }, 
      new Employee() { EmpId = 3, Name = "Emma" }, 
     }.Where(m => m.Name.Contains("John")).ToList(); 
    } 
} 

I試験方法を有するもの

[TestMethod()] 
public void GetEmployeeTest() { 
    EmployeeService obj = new EmployeeService(); 
    var result = obj.GetEmployee(); 
    Xunit.Assert.Collection<Employee>(result, m => Xunit.Assert.Contains("John",m.Name)); 
} 

私は持っています例外メッセージ

Assert.Collection() Failure 
Collection: [Employee { EmpId = 1, Name = "John" }, Employee { EmpId = 2, Name = "Albert John" }] 
Expected item count: 1 
Actual item count: 2 

私の要件は、すべてのitems.Nameは、サブ文字列「ジョン」が含まれている必要がありますチェックすることです。助けて私の使用を確認する方法Xunit.Assert.Collection

答えて

6

Assert.Collectionは各要素インスペクタを1回だけ使用するように見えます。だから、あなたのテストは、以下の作品について:

[Fact] 
public void GetEmployeeTest() 
{ 
    EmployeeService obj = new EmployeeService(); 
    var result = obj.GetEmployee(); 

    Assert.Collection(result, item => Assert.Contains("John", item.Name), 
           item => Assert.Contains("John", item.Name)); 
} 

しかし、これはresultが正確に二つのアイテムを持っている必要があることを意味します。

変更Assert

Assert.All(result, item => Assert.Contains("John", item.Name)); 

あなたが期待している結果を与える必要があります。