Recentemente, migramos para o angular 1.4 e notamos que alguns testes estão falhando intermitentemente devido ao estado restante entre os testes nos cookies. Parece que o mocking de cookies foi removido dos angular-mocks nas versões mais recentes. Eu tenho um par de plunks para ilustrar o ponto.
Aqui, no angular 1.3, o cookie é definido em $cookieStore em um teste e não é definido em $cookieStore em testes subsequentes:
http://plnkr.co/edit/WbRKACxBvJkHUmJwntN4?p=preview
No angular 1.4, no entanto, o cookie ainda é definido em testes subsequentes, causando falha:
http://plnkr.co/edit/c6jpOmmSuufSYvQysdTQ?p=preview
Essa funcionalidade foi removida intencionalmente e, em caso afirmativo, você pode me informar qual é a solução alternativa pretendida?
@shahata você por acaso sabe por que há uma diferença?
@Narretz Nas versões anteriores do Angular, $browser.cookies()
foi completamente ridicularizado por ngMock
e escrever um cookie através $cookies
foi gravado em um mapa na memória e não no navegador. Discutimos isso no passado e consideramos adicionar um kit de teste que se conecta ao novo mecanismo de cookies e fornece ferramentas que verificam se os cookies são gravados com parâmetros corretos (não é mais apenas sobre o valor do cookie), mas não acho isso é muito crítico.
@butchpeters Acho que a melhor maneira é você zombar de $cookies
em seu teste:
module({$cookies: {
store:{},
put: function (key, value) { this.store[key] = value; },
get: function (key) { return this.store[key]; }
}});
Aqui está o plunker fixo: http://plnkr.co/edit/LTQHDtDM5FOiTiXl2waT?p=preview
A equipe Angular acredita que ninguém precisa testar a configuração e obtenção de cookies com ngCookies? Estou chocado ao descobrir que um ano após o lançamento do 1.4 isso ainda não foi resolvido.
Comentários muito úteis
A equipe Angular acredita que ninguém precisa testar a configuração e obtenção de cookies com ngCookies? Estou chocado ao descobrir que um ano após o lançamento do 1.4 isso ainda não foi resolvido.