В Jasmine строковые матчеры предназначены для проверки соответствия строк определённым условиям. Они позволяют не только проверять полное равенство строк, но и искать подстроки, соответствие шаблонам и другие специфические свойства строк.
toBe и
toEqual для строкОба матчера проверяют равенство, но важно понимать различия:
toBe сравнивает строки по
ссылке и значению. Для строк это фактически проверка
по значению, так как строки в JavaScript
неизменяемы.it("проверяет точное равенство строк", () => {
const str = "Hello, Jasmine!";
expect(str).toBe("Hello, Jasmine!");
});
toEqual проверяет глубокое
равенство. Для примитивов, таких как строки, результат
идентичен toBe.it("проверяет эквивалентность строк", () => {
const str = "Test string";
expect(str).toEqual("Test string");
});
toMatch
— проверка по регулярному выражениюМатчер toMatch позволяет проверять строки на
соответствие регулярному выражению, что делает тесты гибкими и
мощными.
it("проверяет наличие подстроки с помощью регулярного выражения", () => {
const email = "user@example.com";
expect(email).toMatch(/.+@.+\..+/);
});
Особенности использования:
toMatch возвращает успешный результат, если строка
соответствует шаблону полностью или частично, в
зависимости от регулярного выражения.it("проверяет начало строки", () => {
const greeting = "Hello, world!";
expect(greeting).toMatch(/^Hello/);
});
Для проверки отсутствия подстроки используется отрицание с
not.
it("проверяет, что строки не содержат определённую подстроку", () => {
const phrase = "Testing Jasmine matchers";
expect(phrase).not.toMatch(/Angular/);
});
Строковые матчеры можно комбинировать с другими проверками для создания более комплексных условий. Например:
it("комбинирует проверки длины и содержания строки", () => {
const password = "Secure123!";
expect(password.length).toBeGreaterThan(8);
expect(password).toMatch(/[A-Z]/);
expect(password).toMatch(/[0-9]/);
});
toMatch для гибких
проверок. Если важна точная строка, лучше toBe или
toEqual.toBe для объектов
строк, созданных через new String(). Они
сравниваются по ссылке, что может дать ложный отрицательный
результат.not повышают
надёжность теста, особенно при проверке на отсутствие
определённых слов или символов.describe("сложные проверки строк", () => {
const url = "https://example.com/path?query=123";
it("содержит протокол https", () => {
expect(url).toMatch(/^https:\/\//);
});
it("содержит домен example.com", () => {
expect(url).toMatch(/example\.com/);
});
it("не содержит localhost", () => {
expect(url).not.toMatch(/localhost/);
});
});
Для проверки пустой строки удобно использовать toBe с
"".
it("проверяет пустую строку", () => {
const empty = "";
expect(empty).toBe("");
});
toBe/toEqual
для точного совпадения.toMatch для подстрок или
шаблонов.not.Эти подходы позволяют создавать надёжные и читаемые тесты, которые легко поддерживать при изменениях кода.