Я хочу смоделировать Lazy Interface, а также Setup
метод для возврата false.
Проблема в том, что при запуске теста я получаю NotSupportedException:
System.NotSupportedException: 'Недопустимая установка для не виртуального (переопределяемого в VB) члена: mock => mock.Value
Вот упрощенный пример:
[TestMethod]
public void SomeTestMethod()
{
var someService = new Mock<Lazy<IService>>();
/*this line throws the exception*/
someService.Setup(x => x.Value.SomeMethod()).Returns(false);
...
}
Обратите внимание, что SomeMethod
на самом деле является виртуальным, но каким-то образом получение отложенной инициализации с помощью x.Value
не поддерживается Moq.
Я не нашел решения для этого конкретного сценария, но я просмотрел некоторые другие подходына заявлениях, но, к сожалению, не работает для меня.
[TestMethod]
public void SomeTestMethod()
{
var someService = new Mock<IService>();
var lazySomeService = new Lazy<IService>(() => someService.Object);
//tried this but won't compile
//lazySomeService.Setup(x => x.Value.SomeMethod()).Returns(false);
//lazySomeService.Value.Setup(x => x.SomeMethod()).Returns(false);
...
}