我們正在編寫一個Ember.js應用程序,並且在一個頁面上有一個Ember.Select
,其選擇是來自Rails數據庫的模型。 select上的值綁定到控制器上的觀察者,該觀察者根據選擇更改視圖。這在使用瀏覽器時可以正常工作。然而,當在Capybara中運行集成測試(同時使用webkit和selenium驅動程序)時,控制器上的觀察者在未選擇任何選項時在此選擇上註冊更改操作。這會觸發轉換並導致測試失敗。由水豚測試觸發的灰燼轉變
代碼的簡化版本低於:
的Ember.Select
<div class="select-dropdown">
{{view Prm.PropertySelect
contentBinding='properties'
optionLabelPath='content.name'
optionValuePath='content.id'
selectionBinding='selectedProperty'
id='property-selector'
classNames='property-selector'}}
</div>
的Ember.Controller
動作
Prm.PropertyController = Ember.ObjectController.extend
selectedLead: null
selectedProperty: null
selectedPropertyChanged: (->
@transitionToRoute('property.index', @get('selectedProperty'))
).observes('selectedProperty')
的水豚規格
require 'spec_helper'
feature 'ember allows direct access to a lead via url', js: true do
scenario 'linking directly to lead' do
user = create_signed_in_user
lead = create_lead_for_user(user)
visit ember_lead_path(lead) # defined in a helper. Returns url as string.
assert_at_lead_detail(lead)
end
def assert_at_lead_detail(lead)
expect(page).to have_link 'All leads'
expect(page).to have_text lead.booking_request.name.upcase
end
end
如果我刪除觀察者,測試通過。如果我不刪除觀察者,測試將轉到相應的url,然後重定向到root,並且測試失敗。
我需要一種方法來重寫測試或選擇,以便我們可以編寫集成測試,以便在直接導航到Ember中的URL之後解決頁面上的內容。