user1952811
user1952811

Reputation: 2468

Stubbing out a service when testing ember component integration tests

I'm looking at the ember testing guides and it says to do the following when you want to stub out a service

import { moduleForComponent, test } from 'ember-qunit';
import hbs from 'htmlbars-inline-precompile';
import Ember from 'ember';

//Stub location service
const locationStub = Ember.Service.extend({
  city: 'New York',
  country: 'USA',
  currentLocation: {
    x: 1234,
    y: 5678
  },

  getCurrentCity() {
    return this.get('city');
  },
  getCurrentCountry() {
    return this.get('country');
  }
});

moduleForComponent('location-indicator', 'Integration | Component | location indicator', {
  integration: true,

  beforeEach: function () {
    this.register('service:location-service', locationStub);
    this.inject.service('location-service', { as: 'location' });
  }
});

The issue is that I get a Uncaught TypeError: this.register is not a function when I use this code. So I am assuming the in the before each this.register('service:location-service', locationStub); is causing the problem.

Any one has any idea how I can work around this or what's the more proper way of stubbing out a service? This code is currently in Ember's docs.

Upvotes: 3

Views: 607

Answers (1)

Jon Denly
Jon Denly

Reputation: 151

Looks like this.register is only present on later versions of ember-qunit, you need to make sure you are running ember-qunit >= 0.4.13.

this.register is only present on ember-qunit >= 0.4.13.

http://discuss.emberjs.com/t/service-injection-in-component-integration-tests/8956/3

Upvotes: 0

Related Questions