Организация Rspec - PullRequest
       0

Организация Rspec

0 голосов
/ 28 августа 2011

В настоящее время я использую rspec с cancan. Я понял, что засорение контрольных примеров контроля разрешений во всех файлах спецификаций моих контроллеров чрезвычайно грязно. По сути, почти все мои файлы спецификаций контроллера имеют что-то вроде:

  describe "failure" do 
    it { get :new }
    it { get :edit, :id => @deal }
    it { get :update, :id => @deal }
    it { get :destroy, :id => @deal }

    after(:each) do
      response.should_not be_success
      response.should redirect_to(root_path)
      flash[:error].should == "Permission denied."
    end
  end
end

В моей системе 4 роли, и это определенно делает организацию гораздо более сложной задачей.

Поскольку все эти тесты связаны с контролем разрешений / ACL, я попытался поместить их все в один файл rspec / models /ility_spec.rb

прямо сейчас, моя способность_спек выглядит следующим образом:

describe "cancan" do 
  it "failure" do 
    @ability.should_not be_able_to(:all, Factory(:purchase))
    @ability.should_not be_able_to(:all, Factory(:user))
    @ability.should_not be_able_to(:all, Visit)
  end
end

Я получаю следующую ошибку:

  6) Ability consumers deals failure 
     Failure/Error: it { get :destroy, :id => @deal }
     NoMethodError:
       undefined method `get' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_1::Nested_2::Nested_2:0x007fd73209a270>
     # ./spec/models/ability_spec.rb:46:in `block (5 levels) in <top (required)>'

Я знаю, что я не должен помещать контроллер get / post в этот файл. Есть ли способ сделать это ради упрощения тестирования моих тестов, связанных с разрешениями?

1 Ответ

1 голос
/ 28 августа 2011

Посмотрите на общие примеры RSpec и посмотрите, сможете ли вы извлечь что-нибудь из общей группы примеров:

http://relishapp.com/rspec/rspec-core/docs/example-groups/shared-examples

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...