Dobra, koledzy. Jak testujecie event keydown na obiekcie window. DispatchEvent mi nie działa, wywala błąd!
Muszę jakoś zamockować window?

Kodzik hooka ( ułatwiłem go znacząco do pytania ) w załączinku.

Jak #!$%@? event w #jasmine window.dispatchEvent(new KeyboardEvent('keydown'))
Błąd jaki dostaje: TypeError: event.target.getAttribute is not a function thrown
#react #testowanieoprogramowania #javascript
krzykrzy1995 - Dobra, koledzy. Jak testujecie event keydown na obiekcie window. Dispa...

źródło: comment_1585214044IpHpEMIX4Qj3lqfRfDrEcA.jpg

Pobierz
@krzykrzy1995: twoim zadaniem jest tak zamockować addEventListener, żeby potem w łatwy sposób móc udawać że triggerujesz event. Np:

keydownEvents = [];
window.addEventListener = (name, callback) => keydownEvents.push(callback);
const triggerEvents = () => keydownEvents.forEach(callback => callback());

i potem sobie kiedy potrzebujesz wołasz w teście triggerEvents() i tyle

  • Odpowiedz
@smaleckg: Zdecydowanie łatwiej będzie z konsoli. Od siebie polecam Mochę, bo ma od razu wbudowaną obsługę wiersza poleceń, do tego można dowolnie i łatwo dawać pluginy (np. istanbul do mierzenie pokrycia) i transpilery (babel, typescript) i to działa, no i przede wszystkim API Jasmine ssie, a w Mocha możesz sobie wybrać. Niemniej jeśli chcesz używać jasmine to instalujesz karmę (koryguję twój post, to jest runner, a nie miernik pokrycia), konfigurujesz, dodajesz
  • Odpowiedz
@Gottek: Jeśli to ma być prawdziwy unit test, to mockujesz wykonanie funkcji $q.reject żeby zwróciła to co chcesz i sprawdzasz czy to zostało zwrócone. Ewentualnie sprawdzasz czy została wykonana.
  • Odpowiedz
#webdev #javascript #jasmine
Chyba już jestem zmęczony :( Co robię nie tak?
https://jsfiddle.net/u4ukLro3/

Oczywiście normalnie serwer działa bez problemów. Przyczyna musi być gdzieś tutaj :/
w konfigu karmy mam taką kolejność podawanych plików

vendor.js // tutaj wszystkie dodatki, które występują też na produkcji. Klient socket.io na początku pliku
angular-mocks.js // no wiadomo, do testowania angulara
common.js // wszystko co moje :)
**/*.tests.js // wiadomo

pomocy :)
@foke: Dzięki, już sobie poradziłem :)
W beforeEach trzeba było odpalić to tak:

socket = io.connect('http://localhost:3000', {
'reconnection delay' : 0
, 'reopen delay' : 0
, 'force new connection' : true
});
  • Odpowiedz