Недавно я обнаружил удивительный ng-describe
пакет, который делает записи модульных тестов для приложений AngularJS очень прозрачными, абстрагируя все код шаблона, который вы должны помнить/искать и писать, чтобы загружать, вводить, издеваться или шпионить.
Кто-нибудь пытался использовать ng-describe
с protractor
? Имеет ли это смысл и мы можем извлечь из этого выгоду?
Одна из вещей, которые привлекли мое внимание, заключается в том, насколько легко вы можете издеваться над HTTP-ответами:
ngDescribe({
inject: '$http', // for making test calls
http: {
get: {
'/my/url': 42, // status 200, data 42
'/my/other/url': [202, 42], // status 202, data 42,
'/my/smart/url': function (method, url, data, headers) {
return [500, 'something is wrong'];
} // status 500, data "something is wrong"
},
post: {
// same format as GET
}
},
tests: function (deps) {
it('responds', function (done) {
deps.$http.get('/my/other/url')
.then(function (response) {
// response.status = 202
// response.data = 42
done();
});
http.flush();
});
}
});
Отклик HTTP-ответов обычно помогает достичь лучшего покрытия e2e и тестировать, как UI реагирует на конкретные ситуации и как работает обработка ошибок. Это то, что мы сейчас делаем с protractor-http-mock
, есть и другие опции, которые выглядят не так просто, как с ng-describe
.