С Rspec запустить тест для каждого из нескольких вариантов? - PullRequest
0 голосов
/ 13 октября 2011

Я хочу запустить данный набор тестов несколько раз - по одному для каждого из основных типов пользователей системы. (Он проверяет различные функции, которые они должны использовать совместно). В более общем смысле, я часто хочу запустить один и тот же набор тестов в разных условиях.

run_as_each(user_list) do |user|
  describe "When visiting the front page with #{user.name}" do
    it "should see the welcome message" do
      ....
    end
    it "should be able to login" do
      ....
    end
  end     
end

Но это не работает - он говорит, что мой метод "run_as_each" не определен - фактически, кажется, что помощники могут использоваться только внутри реальных конкретных тестов, "это". Так что мне делать?

Так, как еще я могу подойти к этой проблеме - в частности, запустить серию тестов для нескольких разных пользователей или, по крайней мере, определить в тесте, для каких пользователей его следует запускать?

Ответы [ 2 ]

1 голос
/ 14 октября 2011

Вы рассматривали использование общего примера?Вы упомянули типы пользователей, поэтому что-то подобное может работать.

shared_examples "a user" do
  let(:user) { described_class.new }

  describe "When visiting the front page" do
    it "should see the welcome message" do
      ....
    end
    it "should be able to login" do
      ....
    end
  end
end

describe UserTypeA do
  it_behaves_like 'a user'
end

describe UserTypeB do
  it_behaves_like 'a user'
end

Я не запускал код, поэтому возможны синтаксические ошибки. Больше из документов

0 голосов
/ 29 октября 2011

Мне удалось обойти эту проблему, включив файл с модулем пространства имен, который включал все «вспомогательные» методы, которые мне нужно было использовать для динамической генерации кода. Фактические помощники по тестированию, если они включены через конфигурацию rspec, загружаются только во время выполнения тестов - поэтому они недоступны для любого кода, который находится вне тестов.

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