Я не эксперт по рубину, и может быть, это будет глупый вопрос... но я слишком любезен о странности (я думаю), которую я нашел в RSpec-матчере, названном match.
Вы знаете, что match
принимает ввод строки или регулярного выражения. Пример:
"test".should match "test" #=> will pass
"test".should match /test/ #=> will pass
Странный начинается, когда вы вставляете специальные символы регулярных выражений во входную строку:
"*test*".should match "*test*" #=> will fail throwing a regex exception
Это означает (я думал), что входные строки интерпретируются как регулярное выражение, тогда мне следует избегать специальных символов регулярных выражений, чтобы заставить его работать:
"*test*".should match "\*test\*" #=> will fail with same exception
"*test*".should match /\*test\*/ #=> will pass
Из этого базового теста я понимаю, что match
обрабатывает входные строки как регулярные выражения, но не позволяет избежать специальных символов регулярных выражений.
Я прав? Разве это не сингулярное поведение? Я имею в виду, это строка или регулярное выражение!
ИЗМЕНИТЬ ПОСЛЕ ОТВЕТА:
После DigitalRoss (справа) ответьте на следующие тесты:
"*test*".should match "\\*test\\*" #=> pass
"*test*".should match '\*test\*' #=> pass
"*test*".should match /\*test\*/ #=> pass