Как смоделировать свойство типа «ushort» только для чтения интерфейса в nSubstitute?

Мне нужно издеваться над интерфейсом, который имеет свойства типа «ushort» только для чтения. Похоже, nSubstitute не позволяет мне устанавливать эти свойства. открытый интерфейс IExampleInterface { ushort ID {получить; } ...... }

IExampleInterface mockObject = Substitute.For<IExampleInterface>();
mockObject.ID.Returns(0x12);  /// not allowed. error:
                              /// ushort does not contain a definition for 'Returns' 
                              /// and the best extension method overload 
                              /// 'SubstituteExtensions.Returns<int>(int, int, params int[])'
                              /// requires a receiver of type 'int'
mockObject.ID = 0x12;    /// not allowed

Если я изменю строку на следующую, она, похоже, сработает.

(int)mockObject.ID).Returns(0x12);

Это правильный способ обойти исходную ошибку?


person Ling Chen    schedule 21.07.2020    source источник
comment
свойства только для чтения — вы имеете в виду string Name { get; }? Тогда mockObject.Name.Returns("ABC"); работает.   -  person Alexander Petrov    schedule 21.07.2020
comment
Спасибо Александр! Я отредактировал исходный пост, проблема была связана с свойством типа «ushort». Я думал, что это одинаково для всех типов, и в качестве примера использовал строковый тип.   -  person Ling Chen    schedule 21.07.2020


Ответы (1)


Литерал 0x12 по умолчанию считается типом int.

Отсюда возвращаемый тип выражения Returns(0x12) также int.

Поэтому необходимо явно указать желаемый тип.

mockObject.Id.Returns<ushort>(0x12);
person Alexander Petrov    schedule 22.07.2020