angularJs کتابخانه ای برای mock آبجکتها خود تهیه کرده است.(angular-mock) . از آن جا که در angular مبحث تزریق وابستگی بسیار زیبا پیاده سازی شده است با استفاده از این کتابخانه میتوانید آبجکتهای متناظر را mock کنید. برای مثال:
»httpBackend$.expectPost
»httpBackend$.expectDelete
»httpBackend$.expectJson
»httpBackend$.expectHead
»httpBackend$.expectPatch
Flush کردن سرویس httpBackend$ در پایان تست نیز برای همین مبحث async اجرا شدن سرویسهای http$backend است.
describe('myApp', function() { var scope; beforeEach(angular.mock.module('myApp')); beforeEach(angular.mock.inject(function($rootScope) { scope = $rootScope.$new(); }); it('...') });
هم چنین برای تست سرویس http$ و شبیه سازی عملیات request و response در انگولار سرویس httpBackend$ تعبیه شده است که یک پیاده سازی Fake از http$ است که در تستها میتوان از آن استفاده کرد. برای مثال:
describe('Remote tests', function() { var $httpBackend, $rootScope, myService; beforeEach(inject( function(_$httpBackend_, _$rootScope_, _myService_) { $httpBackend = _$httpBackend_; $rootScope = _$rootScope_; myService = _myService_; })); it('should make a request to the backend', function() { $httpBackend.expect('GET', '/v1/api/current_user') .respond(200, {userId: 123}); myService.getCurrentUser(); $httpBackend.flush(); }); });
دستور httpBackend$.expect برای ایجاد درخواست مورد نظر استفاده میشود که نوع verb را به عنوان آرگومان اول دریافت میکند. respond نیز مقدار بازگشتی مورد انتظار از سرویس مورد نظر را بر میگرداند. میتوانید از دستورات زیر برای سایر حالات استفاده کنید:
»httpBackend$.expectGet
»httpBackend$.expectPut»httpBackend$.expectGet
»httpBackend$.expectPost
»httpBackend$.expectDelete
»httpBackend$.expectJson
»httpBackend$.expectHead
»httpBackend$.expectPatch
Flush کردن سرویس httpBackend$ در پایان تست نیز برای همین مبحث async اجرا شدن سرویسهای http$backend است.