W Chai można zrobić rzeczy jak następuje:W jaki sposób biblioteki asemblacji, takie jak Chai, działają bez wymuszania wywołania funkcji?
expect({}).to.exist;
exist
nie jest to wywołanie funkcji, ale nadal działa w ramach testów. Odwrotna (expect({}).to.not.exist
) powoduje, że testy zakończą się niepowodzeniem, ale znowu, exist
nie jest wywołaniem funkcji.
W jaki sposób te zapewnienia działają bez wywoływania funkcji? W rzeczywistości, jeśli próbuję powiedzieć expect({}).to.exist()
, test nie powiedzie się, ponieważ exist
nie jest funkcją.
Jak to wyjaśnia? To całkiem duży skok bez wyjaśnienia, co dzieje się w środku. – vsync
Ten link naprawdę pomaga wyjaśnić rzeczy, jeśli nie znasz się na pobierających. Krótka wersja jest taka, że dzięki nowym (-owym) ulepszeniom przeglądarki możesz teraz kontrolować właściwość wykraczającą poza ustawienie (np. 'A.b = 5'). Teraz możesz zdefiniować metodę "getter" dla właściwości, a gdy dowolny kod spróbuje odczytać wartość tej właściwości (np. 'Console.log (a.b)') przeglądarka uruchomi zdefiniowaną metodę "getter". Ta metoda może następnie wywołać logikę (np. Logika asercji Chai). Więc kiedy robisz 'to.exist', nawet jeśli nie ma'() 'po tym, jak * jesteś * wciąż wywołuje metodę (metodę getter). – machineghost