Skip to content
Easy mechanism to access and override Ember owner APIs in test
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
addon-test-support
addon
app
config
tests
vendor
.bowerrc
.editorconfig
.ember-cli
.gitignore
.jshintrc
.npmignore
.travis.yml
.watchmanconfig
LICENSE.md
README.md
bower.json
ember-cli-build.js
index.js
package.json
testem.js

README.md

Ember Owner Test Utils

Build Status Ember Observer Score

This is an addon that is intended to provide an easy mechanism to access and override Ember owner APIs.

Installation

ember install ember-owner-test-utils

Usage

Register

I find this is most useful for dealin with services that hit the network. It allows you to declaratively specify what a given registration is responsible for inside the test file itself.

At the top of your acceptance|integration|unit test import the register helper with the following line:

import { register } from 'ember-owner-test-utils/test-support/register';

Then from within any place that has a test context (ie inside a beforeEach or test) you may set a new registration with the following:

test('it calls foo on the foo service', function(assert){
  assert.expect(1);

  register(this, 'service:foo', Ember.Service.extend({
    foo() {
      assert.ok(true);
    }
  }));

  visit('/thing');
  click('.foo-button-that-triggers-expected-service');
});

This signature can be used in all forms of Ember tests.

Playing Make Believe

You can even use it to make a registration on a component that never existed. Like so:

// See here for more of the test:
// https://github.com/rondale-sc/ember-owner-test-utils/blob/master/tests/integration/my-component-test.js
test('allows the registration of components', function(assert) {
  assert.expect(1);

 register(this, 'template:components/my-component', hbs`<button class="do-it" {{ action 'foo' }}>GO!</button>`);

  register(this, 'component:my-component', Component.extend({
      actions: {
        foo() { assert.ok(true); }
      }
    })
  );

  this.render(hbs`{{my-component}}`);

  this.$('button').click();
});

Hat tip (🎩) to ember-route-action-helper on this one. This is very useful for testing complex interactions without needing to create unnecessary files in your addon's dummy folder.

Thanks

Special thanks to @rwjblue for help with 1.13.13 support. Was a difficult thing to track down. 🍻 If you'd like to hear @cowboyd and myself talk about this in more depth you can check it out at this episode of ember weekend:

Ember Weekend: Bug Integrat

You can’t perform that action at this time.