Существует две небольшие проблемы, которые я вижу здесь. Сначала используйте let синтаксис для определения memoized переменных внутри rspec. Во-вторых, скопируйте скобки вокруг * _path помощники при создании вашего хеша.
Так InstEd:
lol = Hash[ 'Profile' => 'user_path(user)',
'Sign out' => 'signin_path']
есть:
let(:lol) { Hash[ 'Profile' => user_path(user),
'Sign out' => signin_path] }
Ваше описание блока может быть:
describe "with valid information" do
let(:lol) { Hash[ 'Profile' => user_path(user),
'Sign out' => signin_path] }
it { should have_list_of_links(lol) }
end
С побочного эффекта я покажу вам небольшой пример. Учитывая, что у вас есть определитель, определенный в $ PROJECT/spec/support/utilities.rb файл, маршруты приложений и т. Д. ... настроены правильно, и у вас есть ссылки в вашем представлении.
describe "Users pages" do
before { visit root_path }
let(:values) { Hash['Index' => users_path,
'Sign out' => signout_path,
'Sign in' => signin_path] }
subject { page }
describe "with valid informations" do
it { should have_list_of_links(values) }
end
end
работает RSpec:
> rspec
.
Finished in 0.00267 seconds
1 example, 0 failures
Randomized with seed 67346
работает RSpec документация -f
>rspec -f documentation
Users pages
with valid informations
should have link "Sign in"
Finished in 0.00049 seconds
1 example, 0 failures
Randomized with seed 53331
Это не ясно, и вводит в заблуждение, особенно переключатель документации. Это обычная практика для запуска rspec -f документации по новому приложению. Вы просто положили руки (если они используют rspec ofc). Чтобы лучше понять, что происходит.
Если вы вместо этого:
describe "Users pages" do
before { visit root_path }
subject { page }
describe "with valid informations" do
it { should have_link('Index', href: users_path) }
it { should have_link('Sign out', href: signout_path) }
it { should have_link('Sign in', href: signout_path) }
end
end
работает RSpec:
>rspec
...
Finished in 0.0097 seconds
3 examples, 0 failures
Randomized with seed 53347
работает Rspec -F ДОКУМЕНТАЦИЯ
>rspec -f documentation
Users pages
with valid informations
should have link "Index"
should have link "Sign out"
should have link "Sign in"
Finished in 0.00542 seconds
3 examples, 0 failures
Randomized with seed 40120
Я лично, как второй случай (более многословный). Его значение увеличивается, когда число тестов растет, а тестовые структуры усложняются. Вы можете просто запустить rspec -f documentation, чтобы узнать, как использовать приложение, даже не заходя в руководство пользователя/учебник.
Что вы подразумеваете под ** Я знаю, что это неправильный способ сделать **, взглянув на код, который он должен работать, и делать то, что вы ожидаете. Вы получаете какие-либо ошибки? Единственный побочный эффект, который я вижу, заключается в том, что все ссылки будут запускаться в одном примере, и это может быть плохо для документации. – Kocur4d
На самом деле я не знаю, правильно ли это сделать, это больше того, что я хотел сказать ... – jon
У меня есть сообщение об ошибке, мне просто нужно подождать до конца рабочего дня, чтобы скопировать/вставить его Вот. Я не уверен, хотя, если я понимаю побочный эффект, который вы упоминаете. Не могли бы вы рекомендовать этот способ проведения тестов? Но в любом случае, в конце концов, моя цель состоит в том, чтобы попрактиковаться только в некоторых строках кода, не записанных в туто. – jon