diff --git a/spec/javascripts/lib/utils/poll_spec.js b/spec/javascripts/lib/utils/poll_spec.js
index 918b6d32c4315460970bd58891f8dc6284b56746..22f30191ab9ec2e80ac84bf07e9e2027a10cf99a 100644
--- a/spec/javascripts/lib/utils/poll_spec.js
+++ b/spec/javascripts/lib/utils/poll_spec.js
@@ -1,9 +1,5 @@
-import Vue from 'vue';
-import VueResource from 'vue-resource';
 import Poll from '~/lib/utils/poll';
 
-Vue.use(VueResource);
-
 const waitForAllCallsToFinish = (service, waitForCount, successCallback) => {
   const timer = () => {
     setTimeout(() => {
@@ -12,45 +8,33 @@ const waitForAllCallsToFinish = (service, waitForCount, successCallback) => {
       } else {
         timer();
       }
-    }, 5);
+    }, 0);
   };
 
   timer();
 };
 
-class ServiceMock {
-  constructor(endpoint) {
-    this.service = Vue.resource(endpoint);
-  }
+function mockServiceCall(service, response, shouldFail = false) {
+  const action = shouldFail ? Promise.reject : Promise.resolve;
+  const responseObject = response;
+
+  if (!responseObject.headers) responseObject.headers = {};
 
-  fetch() {
-    return this.service.get();
-  }
+  service.fetch.and.callFake(action.bind(Promise, responseObject));
 }
 
 describe('Poll', () => {
-  let callbacks;
-  let service;
+  const service = jasmine.createSpyObj('service', ['fetch']);
+  const callbacks = jasmine.createSpyObj('callbacks', ['success', 'error']);
 
-  beforeEach(() => {
-    callbacks = {
-      success: () => {},
-      error: () => {},
-    };
-
-    service = new ServiceMock('endpoint');
-
-    spyOn(callbacks, 'success');
-    spyOn(callbacks, 'error');
-    spyOn(service, 'fetch').and.callThrough();
+  afterEach(() => {
+    callbacks.success.calls.reset();
+    callbacks.error.calls.reset();
+    service.fetch.calls.reset();
   });
 
   it('calls the success callback when no header for interval is provided', (done) => {
-    const successInterceptor = (request, next) => {
-      next(request.respondWith(JSON.stringify([]), { status: 200 }));
-    };
-
-    Vue.http.interceptors.push(successInterceptor);
+    mockServiceCall(service, { status: 200 });
 
     new Poll({
       resource: service,
@@ -63,18 +47,12 @@ describe('Poll', () => {
       expect(callbacks.success).toHaveBeenCalled();
       expect(callbacks.error).not.toHaveBeenCalled();
 
-      Vue.http.interceptors = _.without(Vue.http.interceptors, successInterceptor);
-
       done();
-    }, 0);
+    });
   });
 
   it('calls the error callback whe the http request returns an error', (done) => {
-    const errorInterceptor = (request, next) => {
-      next(request.respondWith(JSON.stringify([]), { status: 500 }));
-    };
-
-    Vue.http.interceptors.push(errorInterceptor);
+    mockServiceCall(service, { status: 500 }, true);
 
     new Poll({
       resource: service,
@@ -86,42 +64,29 @@ describe('Poll', () => {
     waitForAllCallsToFinish(service, 1, () => {
       expect(callbacks.success).not.toHaveBeenCalled();
       expect(callbacks.error).toHaveBeenCalled();
-      Vue.http.interceptors = _.without(Vue.http.interceptors, errorInterceptor);
 
       done();
     });
   });
 
   it('should call the success callback when the interval header is -1', (done) => {
-    const intervalInterceptor = (request, next) => {
-      next(request.respondWith(JSON.stringify([]), { status: 200, headers: { 'poll-interval': -1 } }));
-    };
-
-    Vue.http.interceptors.push(intervalInterceptor);
+    mockServiceCall(service, { status: 200, headers: { 'poll-interval': -1 } });
 
     new Poll({
       resource: service,
       method: 'fetch',
       successCallback: callbacks.success,
       errorCallback: callbacks.error,
-    }).makeRequest();
-
-    setTimeout(() => {
+    }).makeRequest().then(() => {
       expect(callbacks.success).toHaveBeenCalled();
       expect(callbacks.error).not.toHaveBeenCalled();
 
-      Vue.http.interceptors = _.without(Vue.http.interceptors, intervalInterceptor);
-
       done();
-    }, 0);
+    }).catch(done.fail);
   });
 
   it('starts polling when http status is 200 and interval header is provided', (done) => {
-    const pollInterceptor = (request, next) => {
-      next(request.respondWith(JSON.stringify([]), { status: 200, headers: { 'poll-interval': 2 } }));
-    };
-
-    Vue.http.interceptors.push(pollInterceptor);
+    mockServiceCall(service, { status: 200, headers: { 'poll-interval': 1 } });
 
     const Polling = new Poll({
       resource: service,
@@ -141,19 +106,13 @@ describe('Poll', () => {
       expect(callbacks.success).toHaveBeenCalled();
       expect(callbacks.error).not.toHaveBeenCalled();
 
-      Vue.http.interceptors = _.without(Vue.http.interceptors, pollInterceptor);
-
       done();
     });
   });
 
   describe('stop', () => {
     it('stops polling when method is called', (done) => {
-      const pollInterceptor = (request, next) => {
-        next(request.respondWith(JSON.stringify([]), { status: 200, headers: { 'poll-interval': 2 } }));
-      };
-
-      Vue.http.interceptors.push(pollInterceptor);
+      mockServiceCall(service, { status: 200, headers: { 'poll-interval': 1 } });
 
       const Polling = new Poll({
         resource: service,
@@ -174,8 +133,6 @@ describe('Poll', () => {
         expect(service.fetch).toHaveBeenCalledWith({ page: 1 });
         expect(Polling.stop).toHaveBeenCalled();
 
-        Vue.http.interceptors = _.without(Vue.http.interceptors, pollInterceptor);
-
         done();
       });
     });
@@ -183,11 +140,7 @@ describe('Poll', () => {
 
   describe('restart', () => {
     it('should restart polling when its called', (done) => {
-      const pollInterceptor = (request, next) => {
-        next(request.respondWith(JSON.stringify([]), { status: 200, headers: { 'poll-interval': 2 } }));
-      };
-
-      Vue.http.interceptors.push(pollInterceptor);
+      mockServiceCall(service, { status: 200, headers: { 'poll-interval': 1 } });
 
       const Polling = new Poll({
         resource: service,
@@ -215,8 +168,6 @@ describe('Poll', () => {
         expect(Polling.stop).toHaveBeenCalled();
         expect(Polling.restart).toHaveBeenCalled();
 
-        Vue.http.interceptors = _.without(Vue.http.interceptors, pollInterceptor);
-
         done();
       });
     });