Как издеваться над свойством интерфейса с помощью JustMock in VB.NET

#vb.net #interface #mocking #telerik #justmock

#vb.net #интерфейс #издевательство #telerik #justmock

Вопрос:

Я использую JustMock для создания макетов интерфейсов для модульного тестирования, но, возможно, я делаю это неправильно.

У меня есть интерфейс:

 Public Interface IFoo
    Property Bar as int
End Interface
  

Я хочу издеваться над этим интерфейсом и установить это свойство так, чтобы оно могло быть прочитано потребителями интерфейса.
Начиная с:

 Dim mockFoo as IFoo = Mock.Create(Of IFoo)()
  

Я попытался установить свойство следующим образом:

 mockFoo.Bar = 1
  

А также вот так:

 Mock.Arrange(Sub() mockFoo.Bar = 1).DoNothing()
  

а также вот так:

Издеваться.Упорядочить(функция() mockFoo.Bar).Возвращает(1)

Я следил за вопросом и ответом из этого сообщения на форуме Telerik (не мой вопрос):
http://www.telerik.com/community/forums/justmock/general-discussions/mock-property-set-in-vb-net-module.aspx

Но пример, опубликованный Telerik, не решает мою проблему. Это также выглядит как конкреция, а не интерфейс. Я подхожу к этому совершенно неправильно?

РЕДАКТИРОВАТЬ, ОБНОВЛЯТЬ:
Проблема заключалась в том, что мой проект не создавался. Я могу получить свойства интерфейса, используя следующий синтаксис:

 Mock.Arrange(Function() mockFoo.Bar).Returns(1)
  

Ответ №1:

 Mock.Arrange( () => mockFoo.Bar ).Returns(1);
  

Смотрите документацию Telerik:http://www.telerik.com/help/justmock/basic-usage-mock-returns.html

Комментарии:

1. Только что понял, что это синтаксис C #, который я использовал в лямбда-выражении, и VB.NET может быть другим (я не использовал VB.NET многое). Является ли VB.NET синтаксис Sub() вместо () ?

2. У меня это не работает. В VB.NET Я могу возвращать значения lambda, используя Function() вместо () , но свойство всегда возвращает null / ничего.

3. @Matthew можете ли вы опубликовать свой неудачный тест? Синтаксис выглядит правильным.

4. Проблема заключалась в том, что мой тестовый проект не перестраивался. Используя Function() выражение, я могу заставить его работать сейчас. Спасибо!