2016-11-15 1 views
0

Я хотел бы установить baseUrl для таблицы на основе результата другого теста (на той же странице). Я пробовал следовать этим страницам документов Fitnesse (и других ресурсов): smartrics blog post, fitnesse symbols page, , но я не могу заставить его работать. До сих пор я не пытался со следующими синтаксисах:Используйте символ Fitnesse, чтобы ввести baseUrl в RestFixture

| Fit Rest Fixture | %emailLink% | | GET |/| 200 |Content-Type: text/plain|Email Verified|

| Fit Rest Fixture | emailLink= | | GET |/| 200 |Content-Type: text/plain|Email Verified|

| Fit Rest Fixture | $emailLink | | GET |/| 200 |Content-Type: text/plain|Email Verified|

, но ни одна из этих работ. Я знаю, что символ emailLink не является нулевым, потому что я тестирую его в другой таблице, но я не могу представить его в RestFixture. Я всегда получаю исключение IllegalArgumentException, указывающее, что имя символа не было разрешено относительно его значения, например. java.lang.IllegalArgumentException: Malformed base URL: $emailLink

Любая помощь будет оценена по достоинству.

+0

Я верю тебе используют Fit (не Slim) в качестве тестовой системы. Это верно? У вас есть возможность переключиться на Slim (это повлияет на все приборы, которые вы можете использовать)? Я не знаю, как это сделать (без специального кода в светильниках), что вы хотите использовать Fit. –

ответ

0

Просматривая код FitRestFixture и возившись с ним, я придумал что-то, что работает для меня. кажется, что особенность, которую я искал, не поддерживается из коробки, но может быть легко достигнуто (хотя этот способ не является надёжным) с простой мод, такие как:

/** 
* @return Process args ({@link fit.Fixture}) for Fit runner to extract the 
* baseUrl of each Rest request, first parameter of each RestFixture 
* table. 
*/ 
protected String getBaseUrlFromArgs() { 
    String arg = null; 
    if (args.length > 0) { 
     arg = args[0]; 
     /* mod starts here */ 
     if (isSymbol(arg)) { 
      String symbolName = stripSymbolNotation(arg); 
      arg = resolveSymbol(symbolName); 
     } 
     /* mod ends here */ 
    } 
    return arg; 
} 

private boolean isSymbol(String arg) { 
    // notice that I've used the '<<' notation convention to extract the 
    // the value from a symbol, while in RestFixture the conventional 
    // notation is %symbolName% 
    return null != arg && arg.startsWith("<<"); 
} 

private String stripSymbolNotation(String arg) { 
    return arg.substring(2); 
} 

private String resolveSymbol(String arg) { 
    String symbolValue = (String) Fixture.getSymbol(arg); 
    LOG.warn(String.format("resolved symbol %s to value %s", arg, symbolValue)); 
    return symbolValue; 
} 
0

Вы используете тонкий?

http://www.fitnesse.org/FitNesse.UserGuide.WritingAcceptanceTests.SliM.SymbolsInTables

Я использовал символы таким образом несколько раз, с тонкими, но не в REST Крепеж специально.

+0

Привет, спасибо за ваш ответ. К сожалению, я уже пробовал этот синтаксис (см. Третий пример в вопросе), и он не работает. –

+0

Когда вы тестируете его в другой таблице, как выглядит результат на странице результатов теста? Если вы проверите значение в таблице решений, вы сможете увидеть результат, полученный в результате тестирования. –

+0

Учитывая название светильника '* Fit * Rest Fixture', я считаю, что его тест использует Fit, что объясняет, почему подход Slim не работает. –

Смежные вопросы