Опыт использования moq с VB.Net

Мне очень нравится moq mocking framework. Я использовал его в нескольких проектах. К сожалению, один из моих клиентов требует, чтобы мы использовали VB.Net. Не мое предпочтение, но, эй, .Net - это .Net, верно?

Я слышал, что у moq есть проблемы с VB. Это правда? Так что за неприятности? Я ожидал, что он будет работать нормально, учитывая языково-независимую природу .Net.

Стоит ли мне использовать какую-нибудь другую фреймворк для фиксации для использования с VB?


person Craig Quillen    schedule 28.04.2009    source источник


Ответы (2)


Основная проблема VB.net в отношении имитирующих фреймворков заключается в том, что, в отличие от C #, VB не имеет анонимных методов, только лямбда-выражения (нет возможности объявить анонимный делегат Action).

Это сильно ограничивает возможности. Также существует известная проблема со свойствами с параметрами.

Кроме того, синтаксис языка лямбда-выражений не приводит к чему-то столь же чистому, как C #, с точки зрения удобочитаемости (без флейма, пожалуйста, я пользователь VB, и я скучаю по некоторым функциям C # каждый день), и отчасти это привлекает Moq .

Единственная известная мне среда тестирования, которая что-то сделала в отношении VB, - это TypeMock. Они пытались разработать что-то, что сочетается с синтаксисом VB.

person Denis Troller    schedule 28.04.2009
comment
Какие проблемы возникают с параметризованными свойствами? - person Craig Quillen; 29.04.2009
comment
Я имею в виду проблему 61: code.google.com/p/moq / issues / detail? id = 61 Я не знаю, позаботились ли о нем с момента его появления. - person Denis Troller; 29.04.2009
comment
В отличие от C #, VB [.NET] не имеет анонимных методов, только лямбда-выражения (нет способа объявить анонимный делегат Action). - Я полагаю, с VB.NET 10 (выпущен с VS 2010 в апреле 2010 г.), это уже не так: теперь вы можете писать анонимные Sub на месте, даже многострочные. - Я также не согласен с терминологией "лямбда-выражение" и "анонимный делегат действия". И в C #, и в VB.NET анонимные делегаты - это в основном то же самое, что и лямбда-функции; только синтаксис может немного отличаться. - person stakx - no longer contributing; 13.03.2011
comment
@Stakx: да, это действительно старый ответ :) Думаю, мне нужно время от времени к ним возвращаться. Синтаксис VB менее удобен для простого лямбда-действия. Что касается терминологии, я искал способ отличить функцию (лямбда-выражение, поскольку на самом деле это выражение в том смысле, что оно возвращает значение, которое было доступно в то время), от подпрограммы (одиночной или набор операторов, которые в итоге не оценивают значение, которое в то время не было доступно). C # на самом деле не делает различий с точки зрения языка, но VB делает с конкретными ключевыми словами ... - person Denis Troller; 07.02.2014
comment
Итак, теперь Moq полностью совместим с VB? Поиск в Интернете затруднен из-за проблем, о которых сообщалось 10 лет назад и которые продолжают появляться после моих поисков; не уверены, каков статус по состоянию на 2019 год? - person Ama; 28.09.2019

AFAIK Typemock Isolator - единственный инструмент, который может полностью имитировать VB.NET. Специально для этого сделали API.

person Community    schedule 28.05.2009
comment
Ага. пример здесь: site.typemock.com/vbpage/ 10 сентября 2009 г. / unit-testing-vbnet.html - person RoyOsherove; 23.12.2009