2016-08-08 167 views
0

我有一個REST客戶端被寫入我想要編寫測試的angularJS應用程序的一部分;我嘗試過使用Jasmine(在$ httpBackend上使用passthrough),但根本無法讓它與真正的端點進行交談(這是一項要求)。

有沒有人知道一個合理的庫,允許這個?或者,茉莉花摔跤的方式?

+0

你可以用量角器或別的東西 – user3232739

+0

端到端測試測試它爲什麼如果你不使用摩卡只是想測試後端休息API – MarkoCen

+1

如果你想測試從客戶端到服務器的真實http請求,那麼你不需要使用$ httpBackend。我已經在茉莉花寫了測試,要求真正的端點。 Jasmine支持異步測試,因此編寫與真正的rest API進行通信的測試不成問題。 – thadam

回答

0

你需要注入第一$ httpbackend

describe('MyController', function() { 
var $httpBackend, $rootScope, createController, authRequestHandler; 

// Set up the module 
    beforeEach(module('MyApp')); 

    beforeEach(inject(function($injector) { 
// Set up the mock http service responses 
$httpBackend = $injector.get('$httpBackend'); 
// backend definition common for all tests 
authRequestHandler = $httpBackend.when('GET', '/auth.py') 
         .respond({userId: 'userX'}, {'A-Token': 'xxx'}); 

// Get hold of a scope (i.e. the root scope) 
$rootScope = $injector.get('$rootScope'); 
// The $controller service is used to create instances of controllers 
var $controller = $injector.get('$controller'); 

createController = function() { 
    return $controller('MyController', {'$scope' : $rootScope }); 
}; 
    $httpBackend.when('GET', "/api/rest/").respond(data_to_respond); 
    })); 

下一個寫測試用例

it('getTypes - should return 3 car manufacturers', function() { 
     service.getTypes().then(function(response) { 
      //expect will be here 
     }); 
     $httpBackend.flush(); 
    }); 
+0

正如我在我的問題中所說的,我不想虛假迴應 - 我希望我的客戶與真實的服務器交談。 – Fallso

+0

當測試你不得不僞造迴應 –

+0

因此我問是否有其他測試框架,你不需要,因爲我確定這是茉莉花的限制:) – Fallso