Мы повторно используем многие вещи при разработке любого приложения. При работе с Jasmine обычно используются два источника: Jasmine Docs и Google. Несмотря на то, что мы ссылаемся на эти ресурсы, требуется много времени, чтобы получить то, что мы хотим, то есть правильный синтаксис с примером.
Чтобы не делать этого каждый раз, я включил несколько из них в качестве шпаргалки, которую можно использовать при необходимости.
- Создание шпионского объекта с помощью шпионских методов
mySpy = jasmine.createSpyObj('Contact', ['get','set']);
2. Вызвать поддельный метод вместо реального.
mySpy.pickContact.and.callFake(function () {
return {
id: 10
};
});
3. Вызвать шпионский метод и вернуть значение.
var contact = {
id: 10
};
mySpy.pickContact.and.returnValue(contact);
4. Вызвать шпионский метод и вернуть асинхронное значение.
var contact = {
id: 10
};
mySpy.pickContact.and.returnValue(asyncData(contact));
5. Установите шпион на существующий объект.
spyOn(Contact, 'get'); // Spy on 'get' method of Contact
6. Установить шпиона на собственность
spyOnProperty(Contact, 'name'); // Spy on 'name' property of Contact
7. Проверьте вызываемый шпионский метод.
expect(Contact.get
).toHaveBeenCalled(); // Check if called expect(Contact.set
).not.toHaveBeenCalled(); // Check if not called
8. Вызывается метод проверки шпиона с определенными параметрами.
expect(Contact.get
).toHaveBeenCalledWith('Ganesh', 'Gaitonde');
9. Проверьте количество звонков.
expect(mySpy.get.calls.count()).toBe(1, ‘one call’);
10. Проверьте последний звонок.
expect(mySpy.get.calls.mostRecent().args[1]).toEqual('getErr');
11. Сброс шпионских звонков
var myService = jasmine.createSpyObj('MyService', ['getId']); myService.getId.calls.reset();
12. Переопределите глобальный шпион в локальном файле и сбросьте его после выполнения всех тестов.
... const areArraysEqual = UvUtilService.areArraysEqual(); ... it('applyFilters should apply Filters', () => { ... expect(HomeService.filterCards).not.toHaveBeenCalled(); UvUtilService.areArraysEqual.and.callFake(() => { return false; }); expect(HomeService.filterCards).toHaveBeenCalled(); ... }); afterAll(() => { UvUtilService.areArraysEqual.and.callFake(() => { return areArraysEqual; }); });
13. fakeAsync()
с tick()
→ Нет фактического вызова из файла спецификации
14. async()
с fixture.whenStable()
→ Актуальный вызов из файла спецификации
Первоначально опубликовано на https://yuvi1422.blogspot.com 8 июля 2019 г.