Mat*_*hew 5 mocking telerik justmock
使用JustMock,我可以根据输入参数安排模拟返回一些东西吗?
例如,假设一个方法接受一个int,我想返回该值+ 1
我希望输出始终被模拟为输入+ 1但我不知道设计时的输入.
我的真正用法是使用一个对象参数,我需要模拟总是返回一个具有一些相同属性的新对象...但我不知道如何引用该.Returns()部分中的参数.
编辑:更多细节:
三种类型:
IMoneyConverter
Money
Currency
一个Money对象有两个属性:decimal valueAmount和Currency valueCurrency
IMoneyConverter 暴露:
.Convert(Money valueFrom, Currency currencyTo, DateTime asOfDate)
Run Code Online (Sandbox Code Playgroud)
此方法返回转换后的Money对象,在Currency指定日期的新(currencyTo)中.
我的目的是模拟它IMoneyConverter,使其.Convert方法返回一个Money具有Money(valueFrom)参数和CurrencycurrencyTo参数的新对象.
我不是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 {
}
Run Code Online (Sandbox Code Playgroud)
是的,有可能,请参见示例。
var foo = Mock.Create<IFoo>();
Mock.Arrange(() => foo.Echo(Arg.IsAny<int>())).Returns((int i) => ++i);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2060 次 |
| 最近记录: |