2013-08-26 18 views
1

我爲Ember.js設置了ENV.HELPER_PARAM_LOOKUPS = true,因此linkTo幫助程序將執行屬性查找而不是硬編碼路由。 例如,我可以做{{linkTo view.path}}如何在qunit中設置Ember環境變量

我設置環境變量是我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」:

這也給了棄用警告:

棄用:您所提供view.path的quoteless目的地的路由參數linkTo幫手。很快,這將執行屬性查找,而不是被視爲字符串。要擺脫此警告,請將view.path換成引號。要選擇這種新行爲,請設置ENV.HELPER_PARAM_LOOKUPS = true

顯然,qunit沒有按照我的意圖配置Ember.js。如何在加載測試時使qunit讀取我的環境設置。

這裏是我的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.ENV = { 
    HELPER_PARAM_LOOKUPS: true 
}; 

這是因爲,在初始化它的確如下:

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

and in linkTo幫手,總是用Ember.ENV

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

不僅這是正確的答案,而且很快的答案!謝謝! 我正在閱讀一些其他的帖子,這讓我有一種印象,就是在加載ember之前必須設置ENV,這就是爲什麼我將它們放在標籤中的原因。但顯然,它可以在Ember聲明之後設置,無論如何這都更有意義。 – lionel

+0

不客氣。我在jsfiddle中遇到一些問題時發現了這個問題,因爲代碼在emberjs導入後加載。所以在這種情況下,ENV從未爲我工作過。 –