如何使用 Moq 返回数据或值列表?

发布于 2024-11-04 04:54:42 字数 71 浏览 1 评论 0原文

谁能告诉我如何使用 Moq 框架使用模拟对象返回数据列表并将如此返回的数据列表分配给另一个 List<>多变的。??

Can anyone tell me how to return List of data using mock object using Moq framework and assigning the so returned list of data to another List<> variable.??

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

暗藏城府 2024-11-11 04:54:42
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);
    }
}
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);
    }
}
夜司空 2024-11-11 04:54:42

@理查德·班克斯给出了正确的答案。为了完整起见,如果您想使用 Moq v4功能规范并摆脱.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();
}

@Richard Banks gave the correct answer. For completeness, if you want to use Moq v4 functional specifications and get rid of the .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();
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文