4
我們在一個rails應用程序的幾乎所有基於表的視圖中都有一個過濾條,我們需要測試控制器的動作。如何測試在RSpec中具有過濾器的搜索控制器操作?
的代碼的一個例子:
def index
@users = User.
with_status(params[:status]).
with_role(params[:role_id]).
search(params[:q])
end
上述方法是ActiveRecord的作用域其是設置將被旁路,如果如果空白傳遞的值。
我現在需要做的是三立符合規範,並測試所有ESGE情況:
- 沒有PARAMS通過
- 唯一的作用,只有狀態,只搜索
- 角色+地位,作用+搜索,...(對2)
- 角色+狀態+搜索
我寫的基本規範示例如下:
context "when filtering by status" do
before do
1.times { Factory(:user, :status => "one") }
3.times { Factory(:user, :status => "other") }
end
it "returns only users with the provided :status" do
get :index, :status => "one"
assigns(:users).size.should == 1
assigns(:users)[0].status.should == "one"
end
end
我想編寫一個矩陣,它將混合和匹配角色,狀態和搜索參數並生成適當的規範示例。
數組#排列解決方案還是有更好的方法來做到這一點?
我會通過排列來做到這一點,但我也有興趣看看有人知道更好的方法。 – iain
我只是做了排列組合,儘管我管理了一個很好的線條/規格比(約60條規格的約10條線),但我擔心它的複雜性。 – Kostas
這裏是:https://gist.github.com/1226216 – Kostas