Как смоделировать исключение для get-свойства с Moq - PullRequest
0 голосов
/ 08 февраля 2019

У меня есть свойство только для получения, например

public ICar Car
{
  { 
    get 
    {
      return _car ?? (_car = GetCar());
    }
  }
}

GetCar() при определенных обстоятельствах выдаст NotSupportedException, и я хочу выполнить это модульное тестирование.Я использую Moq.

Я пытаюсь использовать это в моем модульном тесте, но он не работает со свойствами, только с методами

var sut = new CarProcessor(...); //init subject under test
Assert.Throws<NotSupportedException>(() => sut.Car); //evaluate result of Car property

Это не скомпилируется, и оно говорит «Только оператор присваивания, приращение, декремент, ожидание и выражение нового объекта могут использоваться как оператор» error.

Выполнение того же, что и выше для метода, вместо этого свойство отлично работает.

1 Ответ

0 голосов
/ 08 февраля 2019

Вы можете обойти это, назначив свойство в лямбда-выражении оператора, например:

Assert.Throws<NotSupportedException>(() => { var _ = sut.Car; });

Это попытается присвоить свойство одноразовой переменной _ (только C # 7+, используйтеx, если вы компилируете против более низкого уровня языка), который должен скомпилироваться просто отлично.

...