Я искал логическое объяснение этому уже 3 часа, надеюсь, кто-то здесь может мне помочь.
У меня есть три теста:
expect("http://localhost/something/empty/someotherthing").toContain('something/base/someotherthing');
expect("http://localhost/something/empty/someotherthing").toContain('something/notbase/someotherthing');
expect("http://localhost/something/empty/someotherthing").toContain('something/somethingelse/someotherthing');
Все три не пройдены , что неудивительно, но посмотрите на ожидаемые строки:
Expected 'http://localhost/something/empty/someotherthing' to contain 'somethingsomeotherthing'.
Expected 'http://localhost/something/empty/someotherthing' to contain 'something/notsomeotherthing'.
Expected 'http://localhost/something/empty/someotherthing' to contain 'something/somethingelse/someotherthing'.
Почему он удалил / base / и base / в первом и втором ожиданиях соответственно ??
I ' мы пытались избежать косой черты с помощью \, но это не имеет значения. Двойное экранирование с \ действительно имеет значение:
expect("http://localhost/something/empty/someotherthing").toContain('something\\/base\\/someotherthing');
дает
Expected 'http://localhost/something/empty/someotherthing' to contain 'something\/base\/someotherthing'.
Я не могу понять это. Возможно, это как-то связано с тем, что аргумент toContain () анализируется как RegExp или тому подобное, но я ничего не нахожу и не могу повторить поведение со стандартными объектами RegExp ...
Если это Помогает: то же самое происходит и в том случае, если в строке ожидания есть «base /»:
expect("http://localhost/something/base/someotherthing").toContain('something/somethingelse/someotherthing');
дает
Expected 'http://localhost/somethingsomeotherthing' to contain 'something/somethingelse/someotherthing'.
Не уверен, имеет ли это какое-либо отношение к нему, но это тесты карма + жасмин, написанные машинописным шрифтом. Я пробовал с жасмином версии 2.63, 2.99.1 и 3.5
Любая помощь очень ценится!