Ich benutze angular js und ich habe eine controller.js, für die ich Jasmin Testfall schreiben möchte. Ich kann die Funktion des Controllers in meinem Testfall aufrufen. Es gibt eine lokale Funktion in meinem Controller, die durch Methode im Geltungsbereich aufgerufen wird (für die ich einen Testfall schreibe), die eine Service-Methode mit einer Jax-Anforderung aufgerufen hat. $ Httpbackend
(function() {
'use strict';
angular
.module('coApp')
.controller('NewController', [
'$http',
'$q',
'$log',
'$modal',
'$scope',
'AgentDataLoader',
'$timeout',
NewController]);
function NewController ($http, $q, $log, $modal, $scope, $state, $rootScope, $filter, AgentDataLoader, $timeout) {
//Some variables declarations
//some methods
function myMethod($filter, a, b) {
console.log("inside myMethod");
if (angular.isDefined(a) && angular.isDefined(b)) {
console.log("inside if ");
console.log("a:: "+a);
console.log("b:: "+b);
dataLoader.callPOST(a, b)
.then(function (data) {
console.log("Data from service :: "+JSON.stringify(data));
/**calling some directive and methods
I am unable to execute this since I am unable to mock http Post of above mentioned dataLoader
**/
console.log("after http request");
} else {
//some other logic
}
}
$scope.methodToBeTested= function (randomData) {
console.log("selectedSystems called ****** ");
//some logic
myMethod($filter, $scope.a, $scope.b);
};
})();
mit
My Jasmine Testsuite
describe('NewController',function(){
var ctrl, scope, $httpBackend, $compile, parameters;
beforeAll(function (done) {
});
beforeEach(function() {
module('MYmODULE');
module('myServiceModule');
});
beforeEach(inject(function ($controller, _$httpBackend_, $rootScope, _$compile_) {
scope=$rootScope.$new();
$compile = _$compile_;
$httpBackend = _$httpBackend_;
ctrl=$controller('NewController',{$scope: scope});
// Start listening to xhr requests
//This data i want to send as a success of httpBackEnd Post
success.data = JsonData;
console.log('Setting request in $httpBackend');
//Not working
$httpBackend.whenPOST('/abc/efg').success(function(method, url, data) {
console.log("Getting sample data from httpBackend :: "+url);
return [200, success.data, {}];
});
//Not working
$httpBackend.whenPOST('abc/efg').respond(function(method, url, data, headers){
console.log('Received these data:', method, url, data, headers);
phones.push(angular.fromJson(data));
return [200, {}, {}];
});
$httpBackend.flush();
}));
it("Testing myMethodToBeTested of the page", function(){
scope.randomData=someRandomData;
expect(scope.methodToBeTested(scope.randomData));
//Tried this also not working
$httpBackend.expectPOST('/abc/efg').respond(success.data);
afterEach(function() {
});
});
ändern Sie Statuscode 201, wie es Post Anruf –