#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()
выражение, я могу заставить его работать сейчас. Спасибо!