2014-12-29 47 views
0

我試圖TDD我的第一個Ember應用程序。我想一次顯示一個<article>元素。我從服務器上獲得了幾篇文章。我的顯示視圖定義了isVisible(),因此一次只能向用戶顯示一個<article>Ember.js QUnit僅測試可見元素find()

在我的測試,我想要做的事,如:

equal(find('article').text(), 'foobar');

的問題是,它發現所有的文章是否是可見或不可見。

我對Ember相當陌生,所以我對從這裏做些什麼有一些想法,但沒有一個看起來很理想。

我可以尋找封閉的<div id="embernnn" class="ember-view>標籤,並拒絕Ember應用嵌入式display:none樣式的實例。但那會依賴於實現而不是抽象。

我可以使用視圖向當前的<article>添加一個類,但如果我必須這樣做,那麼爲什麼Ember會在視圖中提供isVisible屬性?

我猜這有更好的辦法嗎?

回答

1

我不會使用內聯樣式 - 而是使用CSS類。在你的視圖/組件中,只需添加classNameBindings: ['isVisible'],,在你的CSS中你可以使用.is-visible { display: block; }。我實際上會反轉這個邏輯,因爲除非隱藏,否則隱藏的東西應該是可見的,而不是隱藏的,除非可見,但我認爲你得到了我的一般觀點。

在您的測試案例中,您可以斷言該元素具有所需的類別,或者選擇find('article.is-visible')的活動文章。

+0

謝謝@mpowered。這就說得通了。 Ember讓我在視圖上定義isVisible(),如果我無法輕鬆測試它,這只是讓人感到有趣。另外,不應該像你所建議的那樣將classNameBindings放在視圖中而不是控制器中?我同意,除非隱藏是最好的。 – davidkovsky

+0

是的,我錯過了,因爲我傾向於幾乎所有東西都使用組件。我現在真的只使用應用程序視圖,並使用其他組件。對不起,如果我不清楚:-) – mpowered

+0

不用擔心,我只是想保持清晰的記錄。我不確定在視圖中定義isVisible()的想法。按照我的問題所述,通過自動將內聯樣式的display:none添加到封閉的embernnn元素,它可以按需要工作。但是如果沒有很好的測試支持,那麼我會和你的答案一起去。 – davidkovsky