2012-06-16 5 views
1

Когда я проверить мои контроллеры У меня есть такой код:Канкан, RSpec + Stubbing без PARAMS

describe "GET 'show'" do 
    let!(:comment) { build_stubbed(:comment) } 
    before(:each) { Project.stubs(:find).returns(project) } 

    it "render show template" do 
    get 'show', id: project.id 
    should render_template('show') 
    end 

    it "create a new comment" do 
    Comment.expects(:new).returns(comment) 
    get 'show', id: project.id 
    end 
end 

Моя проблема заключается в следующем: я должен передать идентификатор использовать метод load_and_authorize_resource причиной де ла ligne 139 dans ce code: https://github.com/ryanb/cancan/blob/2.0/lib/cancan/controller_resource.rb, которые проверяют наличие идентификатора в параметрах.

Как это исправить?

Спасибо!

Редактировать: Иными словами: переменная @project не является instaciate методом load_and_authorize_resource, потому что нет идентификатора и cancan проверить, есть ли идентификатор, чтобы найти модель.

ответ

0

Я не совсем уверен, что я понимаю, что вы просите, но вы можете сделать что-то вроде:

before(:each) { Project.stubs(:find).with(anything).returns(project)

Чтобы окурок любого вызова Project.find, который принимает один параметр, независимо от того, что этот параметр. Это помогает?

+0

Прошу прощения, проблема в том, что переменная @project не является instaciate методом load_and_authorize_resource, как и должно быть. – Dougui

+0

Теперь вы чувствуете меньше смысла. Какую переменную '@ project' вы не указываете никому в своем сообщении? Вы также не объявляете переменную 'project' нигде. – sevenseacat

+0

Извините, это просто экстракт. «Code'project'code» декларируется переменной let и '@ project', которая используется в моих представлениях. – Dougui