2016-06-10 4 views
0

Я написал API, который пообещал. Какой метод лучше всего тестировать? Является ли Жасмин хорошим подходом?Единичное тестирование обещаний с помощью api с использованием Jasmine

Также можно привести пример того, как можно выполнить обещание по модулю? Должна ли одна единица тестировать также «затем», а также «уловку»?

ответ

1

Жасмин определенно является сильным выбором для проведения модульных испытаний на основе обещаний. Не зная слишком много о вашем API, ниже приведены несколько примеров того, как вы можете выполнять модульное тестирование в ожидании разрешения обещаний или сбоев.

Ключевое слово в примере ниже представляет собой переменную done, переданную в каждый из модульных тестов (it блоков). Это позволяет жасмину знать, что тест является асинхронным, и жасмин будет ждать, пока функция done будет вызвана, прежде чем перейти от этого модульного теста.

Надеюсь, это поможет!

describe('Unit tests', function() { 
    it('promise should succeed', function (done) { 
    myApi.function().then(function(data) { 
     //assert data came back correctly 
     done(); 
    }).catch(function() { 
     fail(); 
    }); 
    }); 

    it('promise should throw error', function() { 
    myApi.function().then(function(data) { 
     fail(); 
    }).catch(function(error) { 
     //assert error has been thrown correctly 
     done(); 
    }); 
    }); 
}); 
0

Jasmine - это unittest framework, он предоставляет тестовый бегун, методы утверждения и mocks/spies на основе. Это популярный способ unittest javascript code. Он не лучше, чем любой другой доступный путь/рамки, и его следует оценивать по сравнению с другими вариантами, чтобы убедиться, что он подходит для вашего проекта.

Без примера кода, обещания unittesting должны быть ничем не отличающимися от любого другого кода. Зафиксируйте зависимости IO и оцените все критические логические пути. Если ваше обещание явно выбрасывается, то catch может быть ценным методом утверждения. То же самое с then, вызов then должен позволить вам протестировать логику разрешения.

Необходимость взаимодействия с вашим кодом через then и catch может быть не самым эффективным способом реализации вашей логики обещаний. Если существует значительная логика, полезно инкапсулировать это в функции за пределами обещания, чтобы упростить процесс унитаза. Тогда интерфейс к этой основной логике можно легко протестировать, разрешив обещание.