Недавно мы перешли на angular 1.4 и заметили, что некоторые тесты периодически терпят неудачу из-за состояния, которое остается между тестами в файлах cookie. Похоже, что насмешка над файлами cookie была удалена из угловых макетов в последних версиях. У меня есть пара рывков, чтобы проиллюстрировать это.
Здесь, в angular 1.3, cookie устанавливается в $cookieStore в одном тесте и не определяется в $cookieStore в последующих тестах:
http://plnkr.co/edit/WbRKACxBvJkHUmJwntN4?p=preview
Однако в angular 1.4 cookie по-прежнему устанавливается при последующих тестах, что приводит к сбою:
http://plnkr.co/edit/c6jpOmmSuufSYvQysdTQ?p=предварительный просмотр
Была ли эта функциональность удалена намеренно, и если да, то не могли бы вы сообщить мне, каков предполагаемый обходной путь?
@shahata ты случайно не знаешь, в чем разница?
@Narretz В предыдущих версиях Angular $browser.cookies()
полностью высмеивался с помощью ngMock
, а запись файла cookie через $cookies
записывалась на карту в памяти, а не в браузер. Мы обсуждали это в прошлом и рассматривали возможность добавления набора тестов, который подключается к новому механизму файлов cookie и предоставляет инструменты, которые проверяют, что файлы cookie записываются с правильными параметрами (это уже не просто значение файла cookie), но я не думаю, это очень критично.
@butchpeters Я думаю, что лучший способ сделать это — издеваться над $cookies
в своем тесте:
module({$cookies: {
store:{},
put: function (key, value) { this.store[key] = value; },
get: function (key) { return this.store[key]; }
}});
Вот исправленный плункер: http://plnkr.co/edit/LTQHDtDM5FOiTiXl2waT?p=preview
Считает ли команда Angular, что никому не нужно тестировать настройку и получение файлов cookie с помощью ngCookies? Я был потрясен, обнаружив, что через год после выпуска 1.4 с этим все еще не разобрались.
Самый полезный комментарий
Считает ли команда Angular, что никому не нужно тестировать настройку и получение файлов cookie с помощью ngCookies? Я был потрясен, обнаружив, что через год после выпуска 1.4 с этим все еще не разобрались.