Qunit тестирует контроллер ember, расположенный в файле, содержащем несколько контроллеров?

Итак, я пытался протестировать контроллер Ember. Проблема в том, что контроллер находится внутри файла coffeeScript, который содержит несколько контроллеров.

В руководстве по тестированию Ember говорится, чтобы протестировать контроллер, я должен использовать вспомогательный модуль «moduleFor» следующим образом:

moduleFor(fullName [, description [, callbacks]])

В моем случае полное имя звучит так: «CustomersIndexController». Но поскольку он включен в «customers_controller.coffee», который сам включает в себя несколько контроллеров, его тестирование стало проблематичным.

После бесконечного поиска в Интернете я обнаружил (пожалуйста, исправьте меня если я ошибаюсь), что распознаватель заботится только об имени файла, а не об имени, которое предоставляет «экспорт по умолчанию myModel»

Чтобы было понятнее, вот мой "customers_controller.coffee":

`export { CustomersIndexController, CustomersItemController }`

CustomersIndexController = Ember.ArrayController.extend
#Code goes here ......

CustomerItemController = Ember.ObjectController.extend
#Code goes here .....

А вот файл customers-controller-test.coffee:

`import { test, moduleFor } from 'ember-qunit';`
 moduleFor("controller:customers-index-controller", 'C Controller') 

 test "it's an App.Controller", -> ok(@subject())

Я испробовал все идеи, которые мог предложить мой мозг... безуспешно (изменение имени контроллера с camelCase на dasherized, на абсолютный путь, даже пытался импортировать customers_controller.coffee), но я продолжаю получать:

Setup failed on it's a App.Controller: Attempting to register an unknown factory: `controller:customers-index-controller`

Любая помощь/советы/ссылки приветствуются.


person Mawaheb    schedule 04.06.2014    source источник


Ответы (2)


Вы должны быть в состоянии определить его в нижнем верблюжьем регистре.

moduleFor('controller:postsIndex', 'Posts Index Controller');

http://jsbin.com/ruhalota/1/edit

person Kingpin2k    schedule 05.06.2014
comment
Спасибо за ответ, но у меня это не сработало, уже пробовал. проблема в том, что app/controllers/customers_controller.coffee содержит 2 определенных внутри него контроллера: CustomersIndexController и CustomerItemController, я не могу их протестировать, мои app/tests/controllers/customers-controller-tests ошибки, когда я пытаюсь протестировать moduleFor(controller:customerItemController, App.CustomerItemController') - person Mawaheb; 05.06.2014

Если вы посмотрите документацию для резолвера с ember-cli, вы увидите, что он действительно заботится только об именах файлов и их экспорте по умолчанию: http://www.ember-cli.com/#using-modules

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

  • приложение/контроллеры/клиенты/index.coffee
  • приложение/контроллеры/клиенты/item.coffee

Это все при условии, что вы используете ember-cli. Если вы все еще используете ember-app-kit, вам, возможно, придется немного изменить это, но основная идея должна применяться.

person Kim Røen    schedule 05.01.2015