Rhino Mocks を使用して静的拡張メソッドをスタブできますが、戻り値を別の型にキャストするとエラーが発生します。なんで?
using Rhino.Mocks;
public interface INumberGenerator
{
double GetDouble();
}
static class NumberGeneratorExtensionMethods
{
public static double GetTheDouble(this INumberGenerator input)
{
return input.GetDouble();
}
public static decimal GetTheDoubleCastToDecimal(this INumberGenerator input)
{
return (decimal) input.GetDouble();
}
}
class MockExample
{
public void TriggerTheError()
{
var stub = MockRepository.GenerateStub<INumberGenerator>();
// This works
stub.Stub(obj => obj.GetTheDouble()).Return(1.2d);
// This throws the error
stub.Stub(obj => obj.GetTheDoubleCastToDecimal()).Return(1.2m);
}
}
エラーは次のとおりです。
System.InvalidOperationException : タイプ 'System.Decimal' がメソッド 'INumberGenerator.GetDouble();' の戻り値のタイプ 'System.Double' と一致しません