2016-05-17 75 views
1

我有這樣的域名一個IEnumerable類:如何設置的返回值使用NSubstitute

public class ADomainClass 
{ 
    public int Id { get; set; } 
} 

public interface IMyClass : IEnumerable<ADomainClass> 
{ 
} 

public class MyClass : IMyClass 
{ 
    public IEnumerator<ADomainClass> GetEnumerator() 
    { 
     IList<ADomainClass> list = new List<ADomainClass>(); 
     //list = GetData...(); 

     foreach (var item in list) 
     { 
      yield return item; 
     } 
    } 

    ... 
} 

,並希望建立如下的測試:

[Test] 
public void TestSample() 
{ 
    //Arrange 
    IMyClass myclass = Substitute.For<IMyClass>(); 
    IList<ADomainClass> testdata = new List<ADomainClass>() 
    { 
     new ADomainClass(){ Id = 1, }, 
     new ADomainClass(){ Id = 2, }, 
     new ADomainClass(){ Id = 3, }, 
     new ADomainClass(){ Id = 4, }, 
    }; 
    int count = 0; 

    myclass.ReturnsForAnyArgs(testdata); //How to set the "return" value? 

    //Act 
    foreach (ADomainClass item in myclass) 
    { 
     count++; 
    } 

    //Assert 
    count.Should().Be(testdata.Count); 
} 

設置的返回值的方法容易,看起來像這樣:

myclass.GetData().Returns(data); 

我不記得如何設置返回值,當它是一個可枚舉類。我之前解決過這個問題,但不記得我在哪裏使用過它。

+1

爲什麼? NHibernate與NSubstitute做什麼? –

回答

0

你只需要告訴你的替代返回枚舉從你測試數據:

myclass.GetEnumerator().Returns(testdata.GetEnumerator()); 
相關問題