How to correctly write a unit/integration test for a service



I want a service that converts objects in json. For now, have this test :

/* jshint expr:true */
import Ember from 'ember';
import { expect } from 'chai';
import { describeModule, it } from 'ember-mocha';
import startApp from '../../helpers/start-app';

var app, container, store;

    needs: []
  function() {
    before(function() {
      app = startApp();
      container = app.__container__;
      store = container.lookup('service:store');
    it('returns items in json format', function() {
      let service = this.subject();

      var subscription = store.createRecord('subscription', {email: ''});

      var result = service.toJSON();

And this service :

import Ember from 'ember';

export default Ember.Service.extend({
  items: [],
  toJSON: function() {
    return this.get('items').map((item) => {
      return item.toJSON();

It works but I’m uncomfortable with my code because I have to lookup for the store and it seems to be a hack.

I saw on the Internet than it’s better to use Ember.Object.create but it returns an object without toJSON method. I can stub it but I will not be confident in the behavior my method.

What’s the best solution ?


I am having the same problem.

I know this is an old thread, but I feel that this is still an unsolved problem.

Does anyone know how to run unit test on services?