gpt4 book ai didi

mocking - JustMock 可以根据参数返回一个值吗?

转载 作者:行者123 更新时间:2023-12-04 13:43:19 25 4
gpt4 key购买 nike

使用 JustMock,我可以安排一个模拟来根据输入参数返回一些东西吗?

例如,假设一个方法接受一个 int , 我想返回那个值 + 1
我希望输出总是被模拟为输入+1,但我不知道设计时的输入。

我对此的真正用法是使用对象参数,我需要模拟以始终返回具有某些相同属性的新对象...但我不知道如何引用 .Returns() 中的参数。部分。

编辑:更多细节:

三种类型:IMoneyConverterMoneyCurrency
A Money对象有两个属性:decimal valueAmountCurrency valueCurrencyIMoneyConverter暴露:

.Convert(Money valueFrom, Currency currencyTo, DateTime asOfDate)

此方法返回转换后的 Money对象,在新 Currency 中(currencyTo) 截至指定日期。

我的目的是 mock IMoneyConverter使其 .Convert方法返回一个新的 Money具有 Money 数量的对象(valueFrom) 参数和 Currency的currencyTo 参数。

最佳答案

我不是 100% 确定我理解确切的要求,但这个测试有效,我相信将展示如何完成你想要的:

[Test]
public void SampleTest() {
IMoneyConverter mock = Mock.Create<IMoneyConverter>();
mock.Arrange( x => x.Convert( Arg.IsAny<Money>(), Arg.IsAny<Currency>(), Arg.IsAny<DateTime>() ) )
.Returns( (Func<Money,Currency,DateTime,Money>)
( (m, c, d ) => new Money { ValueAmount = m.ValueAmount, Currency = c }) );

Money inMoney = new Money() { ValueAmount = 42 };
Currency inCurrency = new Currency();
Money outMoney = mock.Convert( inMoney, inCurrency, DateTime.Now );
Assert.AreEqual( 42, outMoney.ValueAmount );
Assert.AreSame( inCurrency, outMoney.Currency );
}

public interface IMoneyConverter {
Money Convert( Money valueFrom, Currency currencyTo, DateTime asOfDate );
}

public class Money {
public decimal ValueAmount { get; set; }
public Currency Currency { get; set; }
}

public class Currency {
}

关于mocking - JustMock 可以根据参数返回一个值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7420481/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com