Fitsharp, как передать символы в качестве аргумента?

Я использую FitNesse с FitSharp (.Net) и пытаюсь настроить набор тестов:

  1. Создать случайный порт
  2. Настройка выполнения путь
  3. Запустите процесс на порту, в пути и получите его pid.

Мой код С# выглядит так:

public int RandomPort() {...}
public int SetupWebsite() {...}
public int StartWebsite(string path, int port) {...}

Мой Фитнес выглядит так:

!|Setup|
|RandomPort?|
|>>port|

!|Setup|
|SetupWebsite?|
|>>path|

!|Setup|
|StartWebsite?|<<path|<<port|
|>>pid|

Ошибка: fitSharp.Machine.Exception.MemberMissingException: Member 'startwebsite' with 0 parameter(s) not found for type 'Web.Api.Tests.Setup'.

Я пробовал много вещей, но это никогда не работает, проблема не в том, что я делаю что-то неправильно (что очевидно), а в том, что я не могу найти, как сделать это правильно...

Мне действительно тяжело с Fitnesse... Я не могу нигде найти актуальный учебник или какие-либо ресурсы, которые помогут мне создать хороший SuiteTest... Чтобы добавить больше контекста в мой вопрос, я хочу чтобы запустить IISExpress (моя установка) в проекте Web.Api 2, а затем сделать несколько вызовов Json/Rest, мой Teardown должен просто убить процесс IISExpress и очистить временную папку веб-сайта.

Спасибо за помощь !


person jbuiss0n    schedule 06.05.2015    source источник


Ответы (2)


Оператор сохранения символа (>>) и оператор вызова символа (‹‹) можно использовать для сбора значения в одном месте теста истории, а затем использовать его в других местах. Оператор сохранения символа можно использовать в любой ячейке ожидаемого значения. Вместо сравнения фактического значения с ожидаемым значением фактическое значение сохраняется с именем символа.

Вы можете использовать ключевое слово check:

!|setup|
|check|randomport|>>port|
|check|setupwebsite|>>path|
|check|startwebsite|<<path||<<port|>>pid|

См. http://fitsharp.github.io/Fit/SymbolValues.html.

Вы также можете использовать ключевое слово name. Ключевое слово name присваивает объекту имя символа, которое можно использовать для последующего извлечения объекта.

!|setup|
|name|port|randomport|
|name|path|setupwebsite|
|name|pid|startwebsite|<<path||<<port|

См. http://fitsharp.github.io/Fit/NameKeyword.html.

Обратите внимание, что при вызове метода имя метода создается путем объединения всех остальных ячеек. Другие чередующиеся ячейки являются входными значениями.

person Mike Stockdale    schedule 07.05.2015
comment
С обоими методами я получаю ошибку fitSharp.Machine.Exception.MemberMissingException: Member 'startwebsiteport' with 1 parameter(s) not found for type 'fitlibrary.DoFixture. Я не понимаю, почему имя метода startwebsite объединяется с символом port? - person jbuiss0n; 11.05.2015
comment
Ой! Исправил мой ответ - person Mike Stockdale; 12.05.2015

Благодаря Майку, это почти сделано. Я не понимаю почему, но я должен изменить метод StartWebsite, чтобы он был чем-то вроде StartWebsiteOnPortAndPath, чтобы я мог разделить вызов... Странно.

Мой окончательный результат:

!|setup|
|check|random port|>>port|
|check|setup website|>>path|
|check|start website on port|<<port|and path|<<path|>>pid|
person jbuiss0n    schedule 11.05.2015
comment
Это формат, изобретенный Риком Магриджем, создателем FitLibrary. Вы можете поместить пустые ячейки между ячейками параметров, если хотите. Смотрите мой исправленный ответ. butunclebob.com/ - person Mike Stockdale; 12.05.2015