使用单个起订量设置返回多个参数值

问题描述 投票:0回答:2

我有一个 Moq 对象,我需要返回 4 个不同参数的值。我可以用 4 个不同的语句来完成此操作,但是有没有办法在单个安装语句中实现相同的目的?

var parametersMock = new Mock<IParameters>();

parametersMock.Setup(x => x.Year).Returns(2023);
parametersMock.Setup(x => x.IsFirstTime).Returns(true);
parametersMock.Setup(x => x.IsValid).Returns(true);
parametersMock.Setup(x => x.IsTest).Returns(false);

是否可以在单个模拟设置中实现相同的目标,如下所示:

parametersMock.Setup(x => x.Year, x.IsFirstTime, x.IsValid, x.IsTest).Returns(2023).Returns(true).Returns(true).Returns(false);
c# mocking moq
2个回答
3
投票

当您的接口表示这样的数据模型时,与逻辑繁重的“服务”类相反,通常更容易创建自己的通过可设置属性实现接口的类。

class FakeParameters : IParameters
{
    public int Year {get;set;}
    public bool IsFirstTime {get;set;}
    public bool IsValid{get;set;}
    public bool IsTest{get;set;}
}

// ...
var parameters = new FakeParameters
{
    Year = 2023,
    IsFirstTime = true,
    IsValid = true,
    IsTest = false
};

无论如何,您可能需要考虑让 IParameters 成为接口的原因:通常对于像这样的基本数据模型类,仅使用具体类会更有价值。


0
投票

您可以使用

Mock.Of
通过单个命令设置多个属性

var paramsMock = Mock.Of<IParameters>(m =>
    m.Year == 2023 &&
    m.IsFirstTime == true &&
    m.IsValid == true &&
    m.IsTest == false);
© www.soinside.com 2019 - 2024. All rights reserved.