如何使用Moq

时间:2019-02-08 20:43:12

标签: c# nunit moq

我有一个只有吸气剂的属性,例如

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

GetCar()在某些情况下会抛出NotSupportedException,我想对此进行单元测试。我正在使用起订量。

我正在尝试在单元测试中使用它,但是它不适用于属性,仅适用于方法

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

这不会编译,并显示“仅赋值调用,递增,递减,等待和新对象表达式可以用作语句” 错误。

对方法进行上述操作,而不是使用属性可以正常工作。

1 个答案:

答案 0 :(得分:3)

您可以通过在lambda语句中分配属性来解决此问题,如下所示:

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

这将尝试将属性分配给一次性变量_(仅适用于C#7+,如果要使用较低的语言级别进行编译,请使用x),该编译应该很好。 / p>