Я использую MOQ для настройки метода броска InvalidOperationException
. Затем я использую MSTest Assert.ThrowsException
, чтобы утверждать, что метод генерирует указанное исключение. Когда я отлаживаю тест, он выдает исключение, вместо того, чтобы утверждать, что ожидаемое исключение было выдано.
Я искал это и не нашел примеров, относящихся к моей проблеме. Я добавил атрибут к методу [ExpectedException(typeof(InvalidOperationException))]
, но получаю те же результаты. Я пытался переместить код, который выбрасывает исключение за пределы Assert, в его собственную строку кода, но я получаю те же результаты. Я не пытался обернуть код в собственный метод, который вызывается из тестового метода, потому что я не понимаю, как передать макет объекта в новый метод в качестве параметра (какой тип я бы использовал? Компилятор не как Moq или MOQ).
[TestClass]
public class UnitTest1
{
[ExpectedException(typeof(InvalidOperationException))]
[TestMethod]
public void TestMethod1()
{
var mock = new Mock<IFoo>();
// throwing when invoked with specific parameters
mock.Setup(foo =>
foo.DoSomething("reset")).Throws<InvalidOperationException>();
//mock.Object.DoSomething("reset");
Assert.ThrowsException<InvalidOperationException>(() =>
mock.Object.DoSomething("reset"));
}
}