Closed JohnyDeath closed 5 years ago
Добавил поддержку текучих утверждений на базе последней конфигурации Тестера версии 1.3.3.6 Добавлено:
Старался сохранить стилистику написания кода. Прошу проверить и высказать пожелания.
Сам cf: https://1drv.ms/u/s!AvAh8V3WSDtWlsZlAgVhfZPVHfXBzw
P.S. в выгруженной конфе имеется еще один модуль с именем "ХТТП". На него можно не обращать внимания, он к данной теме отношения не имеет.
Прикладываю текст скрипта, которым тестировал всё это:
Ожидаем.Что(ИСТИНА).ЭтоИстина();
Ожидаем.Что(ЛОЖЬ, "Проверка НЕ").НЕ_().ЭтоИстина();
Ожидаем.Что(ЛОЖЬ).ЭтоЛожь();
Ожидаем.Что(2).Равно(1+1);
Ожидаем.Что(2).НЕ_().Равно(3).Равно(2).НЕ_().Равно(4);
Ожидаем.Что(2).Больше(1);
Ожидаем.Что(2).БольшеИлиРавно(2);
Ожидаем.Что(2).БольшеИлиРавно(1);
Ожидаем.Что(2).Меньше(3);
Ожидаем.Что(2).МеньшеИлиРавно(3);
Ожидаем.Что(2).МеньшеИлиРавно(2);
Ожидаем.Что(2).Заполнено();
Ожидаем.Что(Неопределено).Не_().Заполнено();
Ожидаем.Что(0).Существует();
Ожидаем.Что(NULL).Не_().Существует();
Ожидаем.Что(NULL).ЭтоNULL();
Ожидаем.Что(Неопределено).ЭтоНеопределено();
Ожидаем.Что(2).НЕ_().Между(10, 15).Между(0, 5);
Ожидаем.Что("Строка", "Содержание в строке").Содержит("к").НЕ_().Содержит("2");
Ожидаем.Что(Новый Структура("й,ц,у", 1, 2, 3), "Содержание в структуре").Содержит(2);
Массив = Новый Массив;
Массив.Добавить(1);
Массив.Добавить(3);
Массив.Добавить(5);
Ожидаем.Что(Массив, "Содержание в массиве").НЕ_().Содержит(2);
Ожидаем.Что("ЙЦУК").ИмеетДлину(4);
Ожидаем.Что(Массив).ИмеетДлину(3).НЕ_().ИмеетДлину(5);
Попытка
Ожидаем.Что(2, "Должна быть ошибка").Содержит(2);
Исключение
ОписаниеОшибки = ОписаниеОшибки();
Ожидаем.Что(ОписаниеОшибки).Содержит("не умеет работать с типом").Содержит("Должна быть ошибка");
КонецПопытки;
Спасибо за проделанную работу! Я со своей стороны, тщательно проанализировал и адаптировал её. Кое-что пришлось изменить, и дополнить в соответствии с методикой уже существующих сообщений и локализации в тестере, а также тому факту, что у нас сценарии чуть отличаются от юнит-тестов. В общем, мне нужна критика. вот тесты:
течьНаКлиенте ();
течьНаСервере ();
&НаКлиенте
Процедура течьНаКлиенте ()
Заявить(истина).ЭтоИстина();
Заявить(ложь, "Проверка НЕ").Не_().ЭтоИстина();
Заявить(ложь).ЭтоЛожь();
Заявить(2).Равно(1+1);
Заявить(2).Не_().Равно(3).Равно(2).Не_().Равно(4);
Заявить(2).Больше(1);
Заявить(2).БольшеИлиРавно(2);
Заявить(2).БольшеИлиРавно(1);
Заявить(2).Меньше(3);
Заявить(2).МеньшеИлиРавно(3);
Заявить(2).МеньшеИлиРавно(2);
Заявить(2).Заполнено();
Заявить(неопределено).Не_().Заполнено();
Заявить(неопределено).Пусто();
Заявить(0).Существует();
Заявить(null).Не_().Существует();
Заявить(null).ЭтоNull();
Заявить(неопределено).ЭтоНеопределено();
Заявить(2).Не_().Между(10, 15).Между(0, 5);
Заявить("Строка", "Содержание в строке").Содержит("к").Не_().Содержит("2");
Заявить(Новый Структура("й,ц,у", 1, 2, 3), "Содержание в структуре").Содержит(2);
Массив = Новый Массив;
Массив.Добавить(1);
Массив.Добавить(3);
Массив.Добавить(5);
Заявить(Массив, "Содержание в массиве").Не_().Содержит(2);
Заявить("ЙЦУК").ИмеетДлину(4);
Заявить("ЙЦУК").Вмещает(4);
Заявить(Массив).ИмеетДлину(3).Не_().ИмеетДлину(5);
Заявить(Массив).Вмещает(3).Не_().Вмещает(5);
КонецПроцедуры
&НаСервере
Процедура течьНаСервере ()
Заявить(истина).ЭтоИстина();
Заявить(ложь, "Проверка НЕ").Не_().ЭтоИстина();
Заявить(ложь).ЭтоЛожь();
Заявить(2).Равно(1+1);
Заявить(2).Не_().Равно(3).Равно(2).Не_().Равно(4);
Заявить(2).Больше(1);
Заявить(2).БольшеИлиРавно(2);
Заявить(2).БольшеИлиРавно(1);
Заявить(2).Меньше(3);
Заявить(2).МеньшеИлиРавно(3);
Заявить(2).МеньшеИлиРавно(2);
Заявить(2).Заполнено();
Заявить(неопределено).Не_().Заполнено();
Заявить(неопределено).Пусто();
Заявить(0).Существует();
Заявить(null).Не_().Существует();
Заявить(null).ЭтоNull();
Заявить(неопределено).ЭтоНеопределено();
Заявить(2).Не_().Между(10, 15).Между(0, 5);
Заявить("Строка", "Содержание в строке").Содержит("к").Не_().Содержит("2");
Заявить(Новый Структура("й,ц,у", 1, 2, 3), "Содержание в структуре").Содержит(2);
Массив = Новый Массив;
Массив.Добавить(1);
Массив.Добавить(3);
Массив.Добавить(5);
Заявить(Массив, "Содержание в массиве").Не_().Содержит(2);
Заявить("ЙЦУК").ИмеетДлину(4);
Заявить("ЙЦУК").Вмещает(4);
Заявить(Массив).ИмеетДлину(3).Не_().ИмеетДлину(5);
Заявить(Массив).Вмещает(3).Не_().Вмещает(5);
КонецПроцедуры
Всё отлично! И лаконичней получилось.
Но есть один баг. Выводит неправильное сообщение, если в утверждении было отрицание.
Например код
Заявить(истина).Не_().ЭтоИстина();
Выплевывает исключение с текстом:
Значение Истина должно быть Истина
а должно быть так:
Значение Истина НЕ должно быть Истина
За это отвечала переменная переменная модуля обработки с именем DaneilForMessage.
И еще один момент. Ты специально убрал скобки в сообщении об ошибки вокруг значений? Мне кажется, что с ними как-то удобней читаются исключения.
Всё, поправил, скачивание по тойже ссылке, посмотри пожалуйста.
И еще один момент. Ты специально убрал скобки в сообщении об ошибки вокруг значений? Мне кажется, что с ними как-то удобней читаются исключения.
Да, понимаешь, у меня же уже есть метод Проверить (), и там без угловых скобок, поэтому я решил сохранить преемственность (а кавычки не ставил, потому что тип может быть не строка).
Теперь всё отлично, спасибо!
Очень удобно пользоваться проверками в виде текучих утверждений как это сделано в xUnitFor1C https://github.com/xDrivenDevelopment/xUnitFor1C/wiki/Текучие-%28fluent%29-утверждения
И тогда нагромождения "Если" превращаются в красивые: