2011-05-02 36 views
4

任何人都可以告訴我如何使用模擬對象使用Moq框架返回數據列表,並將如此返回的數據列表分配給另一個列表<>變量。如何使用Moq返回數據或值列表?

+0

我使用的是模擬對象調用這名單<>形式返回值的方法。 – Neerajan 2011-05-02 10:12:44

+1

請添加一些示例代碼。 http://tinyurl.com/so-hints – jeroenh 2011-05-02 10:35:17

回答

6
public class SomeClass 
{ 
    public virtual List<int> GimmeSomeData() 
    { 
     throw new NotImplementedException(); 
    } 
} 

[TestClass] 
public class TestSomeClass 
{ 
    [TestMethod] 
    public void HowToMockAList() 
    { 
     var mock = new Mock<SomeClass>(); 
     mock.Setup(m => m.GimmeSomeData()).Returns(() => new List<int> {1, 2, 3}); 
     var resultList = mock.Object.GimmeSomeData(); 
     CollectionAssert.AreEquivalent(new List<int>{1,2,3},resultList); 
    } 
} 
1

@Richard Banks給出了正確的答案。爲了完整起見,如果你想使用Moq v4 functional specifications和擺脫.Object的:

void Main() 
{ 
    var list = new List<int> { 1, 2, 3 }; 

    ISomeInterface implementation = 
     Mock.Of<ISomeInterface>(si => si.GimmeSomeData() == list); 

    List<int> resultList = implementation.GimmeSomeData(); 

    foreach (int i in resultList) 
    { 
     Console.WriteLine(i); 
    } 
} 

public interface ISomeInterface 
{ 
    List<int> GimmeSomeData(); 
}