Как добавить буквальный хэш в имя развернутого метода Спока? - PullRequest
0 голосов
/ 06 ноября 2018

Тесты Спока на основе данных позволяют вставлять данные в описание, например так (с здесь ):

@Unroll
def "maximum of #a and #b is #c"() {
    expect:
    Math.max(a, b) == c

    where:
    a | b || c
    1 | 3 || 3
    7 | 4 || 7
  }
}

Дает:

maximum of 1 and 3 is 3   PASSED
maximum of 7 and 4 is 7   PASSED

Но как я могу вставить буквальный хеш? например При именовании методов мне нравится использовать стандартный префикс хеша:

@Unroll
def "Math#max(#a, #b) is #c"() {
    expect:
    Math.max(a, b) == c

    where:
    a | b || c
    1 | 3 || 3
    7 | 4 || 7
  }
}

Но это приводит к:

Math#Error:max(1, 3) is 3   PASSED
Math#Error:max(7, 4) is 7   PASSED

Я пытался сбежать с '\\' и '#', но ни одна из них не работает.

1 Ответ

0 голосов
/ 07 ноября 2018

Развертывание описания разбирается с помощью регулярного выражения и функции выхода не существует.

Но вы можете сделать одно решение: добавить еще один символ после #, чтобы оно не совпадало с регулярным выражением, например так:

def "Math#.max(#a, #b) is #c"() { ... }

И сообщение будет

Math # .max (1, 3) равно 3
Math # .max (7, 4) - 7

Регулярное выражение, используемое для разбора описания, таково: #([a-zA-Z_$]([\w$.]|\(\))*). Таким образом, вы можете использовать символы, такие как .!- и т. Д.

...