2013-08-26 2 views
1

Я устанавливаю ENV.HELPER_PARAM_LOOKUPS = true для Ember.js, чтобы хелпер linkTo выполнил поиск свойств вместо жестко запрограммированного маршрута. Например, я мог бы сделать {{linkTo view.path}}Как установить переменную окружения Ember в qunit

так, как я установить переменную окружения находится внутри тега моего макета application.html.erb (я использую рельсы 4.0 кстати), следующим образом:

<script type="text/javascript" > 
    // Ember environment variable 
     ENV = { 
     HELPER_PARAM_LOOKUPS: true 
     }; 
    </script> 

Однако, когда я запускаю тест QUnit, он дает ошибку, как:

попытка linkTo маршрут «view.path.index» не удалось. Маршрутизатор не нашел «» view.path.index в своих возможных маршрутах:

Это также дает предупреждение устаревания:

устаревания: Вы ввели параметр маршрута quoteless назначените view.path в linkTo helper. Вскоре это будет выполнять поиск свойств, а не обрабатываться как строка. Чтобы избавиться от этого предупреждения, обведите view.path в кавычки. Для того, чтобы выбрать это новое поведение, установить ENV.HELPER_PARAM_LOOKUPS = истинный

Видимо, QUnit не конфигурированию ember.js, как я предполагал. Как заставить qunit читать настройки моей среды для ember при загрузке теста.

Вот код в моем QUnit теста:

module("Frontend Test", { 
    setup: function() { 
    Ember.run(App, App.advanceReadiness); 
    }, 
    teardown: function() { 
    App.reset(); 
    } 
}); 

test("Check HTML is returned", function() { 
    visit("/").then(function() { 
ok(exists("*"), "Found HTML!"); 
    }); 
}); 

ответ

1

Я думаю, ваша проблема в том, что вы объявляете ENV, после того, как импортировать сценарий emberjs.

Если вы объявляете раньше, используя:

ENV = { 
    HELPER_PARAM_LOOKUPS: true 
}; 

будет работать, но после того, как сценарий Ember, вы должны объявить в пространстве имен Эмбер:

Ember.ENV = { 
    HELPER_PARAM_LOOKUPS: true 
}; 

Это происходит потому, что при инициализации он делает:

Ember.ENV = 'undefined' === typeof ENV ? {} : ENV; 

и linkTo помощник, всегда использует Ember.ENV:

if (Ember.ENV.HELPER_PARAM_LOOKUPS) { 
    ... 
} 
+0

Это не только правильный ответ, но и очень быстрый ответ! Благодаря! Я читал еще несколько сообщений, которые заставляют меня создавать впечатление, что ENV нужно установить перед загрузкой ember, поэтому я поместил их в тег . Но, по-видимому, это может быть установлено после декларации Эмбера, что имеет смысл в любом случае. – lionel

+0

Добро пожаловать. Я обнаружил это, когда сталкивался с некоторыми проблемами в jsfiddle, потому что код загружается после импорта emberjs. Так что только ENV никогда не работал для меня, в этом случае. –

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