Używam frameworków Ionic do niestandardowych aplikacji. W trakcie tego procesu próbuję napisać test jednostki dla fabryki datastoreServices
, która ma zależność od DomainService
i $http
. Jestem niezadowolony z wdrożenia testów Jasmine Unit.
Moje fabryki są następujące.
app.factory("datastoreServices", ["$http", function($http) {
return {
getData: function(data, DomainService) {
return $http.post(DomainService.host + 'factor', data);
}
};
}]);
app.factory('DomainService', function() { //here
if (ionic.Platform.isAndroid()) {
return {
host: 'http://10.0.2.2:7001/'
}
}
return {
host: 'http://localhost:7001/'
}
})
I mój szkielet testu jednostkowego wygląda następująco. Ma dwie zależności, więc nie mógł dowiedzieć się, jak postępować. To jest to, co dostałem do tej pory w jednostkowym pliku testowym.
describe(
'datastoreServices',
function() {
beforeEach(module('Myapp'));
describe('getData'),
function() {
it("Should return correct values", inject(function(datastoreServices, DomainService, $httpBackend) {
expect(datastoreServices.getData(httpBackend.. /***something here!**/)
.toEqual("2.2");
}))
}
Mam bardzo małą wiedzę na temat szyderstwa i rzeczy. Czy ktoś może mi pomóc przetestować tę fabrykę datastoreServices
. Testowane są następujące rzeczy:
- Czy poczta Http wykonuje prawidłowe połączenia?
- Czy funkcja zwraca właściwą obietnicę?
Oto podobny scenariusz aplikacji w plnkr.
Idk, jeśli proszę o zbyt wiele. Z góry dziękuję.
Szczerze mówiąc, nie rozumiem problemu. Istnieje mnóstwo przykładów kpiących z $ http. Co tu jest tak wyjątkowego? BTW gdzie jest związek z jonowym? Kolejne pytanie: czy twoja aplikacja działa, tylko zmaga się z testem? – hgoebl
Cóż, masz rację, że jest wiele przykładów kpiny z http. Jednak nie testuję tylko protokołu http, ale także kontrolera, który go zawiera. W sekcji opisowej mam dwa różne scenariusze testowe. Używany jest jon, ale nie jest to bardzo istotne dla pytania. I tak, aplikacja jest w pełni funkcjonalna, pożądane są tylko metody testowania dla każdej funkcji. Senario aplikacji jest dodawany jak w 'plnker' http://plnkr.co/edit/1CgLJgnmjt3sv2caP938. Jak byś przetestował każdą z tych funkcji. –
Fabryczne 'foo' jest tylko bezużytecznym kodem standardowym i może zostać całkowicie wyeliminowane. Sterownik nie jest użytecznym kontrolerem. Powinieneś podać bardziej realistyczne przykłady, więc fajnie jest przetestować swój kod ;-) – hgoebl