2015-01-14 5 views
1

У меня возникла проблема, когда приложение Ember, которое я тестирую, похоже, не замечает модели, которые я создаю с помощью FactoryGuy. Вот мой тестовый файл:Тестирование ember с использованием ember-cli и фабричного парня

import Ember from 'ember'; 
import startApp from '../helpers/start-app'; 
import FactoryGuy from 'factory-guy'; 
import { testMixin as FactoryGuyTestMixin} from 'factory-guy'; 
import carsFactory from "../fixtures/car"; 

var application, testHelper, store, make; 
var TestHelper = Ember.Object.createWithMixins(FactoryGuyTestMixin); 

module('Acceptance: Cars', { 
    setup: function() { 
     application = startApp(); 
     testHelper = TestHelper.setup(application); 
     store = testHelper.getStore(); 
     testHelper.make('car'); 
    }, 
    teardown: function() { 
     Ember.run(function() { testHelper.teardown(); }); 
     Ember.run(application, 'destroy'); 
    } 
}); 

test('visiting /cars', function() { 
    equal(store.all('car').get('content.length'), 1); 
    visit('/cars'); 

    andThen(function() { 
     equal(currentPath(), 'cars'); 
     var li = find('li'); 
     equal(li.length, 2); 
    }); 
}); 

Первое и второе равные утверждения будут успешными, но последний не удастся. Вот что мой шаблон выглядит следующим образом:

<ul> 
{{#each car in model}} 
<li>{{car.label}}</li> 
{{/each}} 
</ul> 

И мой маршрут:

import Ember from 'ember'; 

export default Ember.Route.extend({ 
    model: function() { 
     this.store.find('car'); 
    } 
}); 

Что мне не хватает в получении магазина Тлеющего приложение в, чтобы правильно заполняется методом сделать FactoryGuy в?

Редактировать: Я также попытался добавить следующую строку в верхней части тестового метода и в функцию настройки, и он все еще работает неправильно.

testHelper.handleFindMany('car', 1); 
+0

У вас есть эта работа еще? Я не видел этого до сегодняшнего дня. – DanielSpaniel

+0

@ daniel еще нет. Я потратил некоторое время на то, чтобы написать интеграционные тесты, но по-прежнему хотел бы получить эту работу, если это возможно. –

+0

Я работаю над новой версией, которая, надеюсь, упростит ситуацию. Сообщите, когда я закончу, и попытаюсь решить эту проблему. – DanielSpaniel

ответ

1

EmberDataFactoryGuy теперь является уголек аддон, так что если вы используете что то тест будет выглядеть следующим образом:

import Ember from 'ember'; 
import startApp from '../helpers/start-app'; 
import { make } from 'ember-data-factory-guy'; 
import TestHelper from 'ember-data-factory-guy/factory-guy-test-helper'; 

var App; 

module('Acceptance: Cars', { 
    setup: function() { 
    Ember.run(function() { 
     App = startApp(); 
     TestHelper.setup(); 
    }); 
    }, 
    teardown: function() { 
    Ember.run(function() { 
     TestHelper.teardown(); 
     App.destroy(); 
    }); 
    } 
}); 

test('visiting /cars', function() { 
    TestHelper.handleFindAll('car', 2); 
    visit('/cars'); 

    andThen(function() { 
    equal(currentPath(), 'cars'); 
    var li = find('li'); 
    equal(li.length, 2); 
    }); 

});

Там не является приемочные испытания образца, как эта в уголек-данных завода-парень репо здесь (выглядит так же, как этот, хотя):

https://github.com/danielspaniel/ember-data-factory-guy/blob/master/tests/acceptance/users-view-test.js

Во всяком случае, нет больше хлопот настройки магазина или создания TestHelper, все это сделано для вас и автоматически настраивается при запуске приложения.

Смежные вопросы