2009-11-18 112 views
1

我正在加緊黃瓜,我有一個問題讓我的第一個測試通過。我得到的例外是:Rails |黃瓜| acl9 | AccessDenied

And I visit the new contract screen 
    Acl9::AccessDenied (Acl9::AccessDenied) 
    /usr/local/lib/ruby/1.8/benchmark.rb:308:in `realtime' 
    (eval):2:in `visit' 
    ./features/step_definitions/manage_contracts_steps.rb:2:in `/^I visit the (.*) screen$/' 
    features/manage_contracts.feature:15:in `And I visit the new contract screen' 

這裏是我的黃瓜功能...

Background: 
Given the following user records 
| login | password | name | role   | 
| bob | secret | Bob | 'PSCM Staff' | 
| admin | secret | Frank| admin  | 

@new 
Scenario: Create Contract 
When I log in as "bob" with password "secret" 
And I visit the new contract screen 
Then I should see "Contract Name" 

我steps.rb:

Given /^the following user records$/ do |table| 
    table.hashes.each do |hash| 
    role = hash.delete('role') 
    u = Factory(:user, hash) 
    u.has_role!(role) if role 
    end 
end 

When /^I visit the (.*) screen$/ do |screen| 
    visit path_to(screen) 
end 

最後,在我的controller.rb我有以下access_control塊:

before_filter :load_contract, :except => [:cancel_action,:new,:create] 

    access_control do 
    allow :admin 
    allow logged_in, :to => [:index,:show,:log] 
    allow "PSCM Staff", :to => [:new,:create] 
    allow :editor, :of => :contract 
    end 

當我從瀏覽器明確地執行這些步驟時,senario正常工作。

對不起,很長的文章,謝謝!

回答

2

我發現了這個問題。如果這有助於其他人。這個問題是包括在這條線的管帶引號的

| bob | secret | Bob | 'PSCM Staff' |

應改爲

| bob | secret | Bob | PSCM Staff |