1
我正在使用rspec,並且當前有測試路由的任務。 在路線我:rspec:帶約束條件的測試路由
get ':url' => 'article#get', constraints: lambda { |request|
Article.public.where(url: request.params["url"]).first
}
get ':url' => 'product#get', constraints: lambda { |request|
Product.get_publick_prod_by_url(request.params["url"])
}
和測試:
let!(:article) {Article.create(name: "qweqwe",
short_description: "sh",
description: "dscr",
public: true,
meta_title: "title",
meta_description: "meta-descr",
meta_keywords: "qwe",
url: "qweqwe")}
before(:each) do
Epk::Application.reload_routes!
end
it "should route to article" do
expect(get: article.url).to route_to(controller: 'article', action: 'get', url: "qweqwe")
end
測試不及格爲一些奇怪的原因。 輸出 - No route matches "/qweqwe"
。
雖然用手測試,所有代碼工作完美,但我想建立測試它..
你運行'耙路線',以確保路線匹配嗎?我並不完全熟悉你在做什麼,但IMO可能不應該有一個匹配'/ qweqwe'的路線。看起來像一條奇怪的路線。 – mattforni 2014-11-14 18:39:57
你可以嘗試將'public'範圍重命名爲其他東西嗎?這是一個保留字。 – zetetic 2014-11-14 23:56:00
@mattforni它完成允許像site.com/article_name這樣的短網址。它完美的工作現場,我只有rspec測試問題。 – 2014-11-15 00:48:10