【发布时间】:2013-03-19 20:30:10
【问题描述】:
我是 ruby/rails 的新手,正在做一个教程,我想知道如何解决我的小问题...
我有一个描述“使用有效信息”,它测试当用户使用有效信息登录时应该或不应该发生什么。 在此过程中,我希望能够验证新页面上是否存在某些链接。在 tuto 中,只有 2 个链接,所以我们这样做:
it { should have_link('Profile', href: user_path(user)) }
it { should have_link('Sign out', href: signout_path) }
但是如果我们假设有 10 个链接呢?我认为有一个助手会更容易吗?但是我不知道怎么写。这就是我带来的......
lol = Hash[ 'Profile' => 'user_path(user)',
'Sign out' => 'signin_path']
it { should have_list_of_links(lol) }
然后在 $PROJECT/spec/support/utilities.rb 文件中,我定义了新的 *have_list_of_links* 函数:
RSpec::Matchers.define :have_list_of_links do |lol|
match do |page|
lol.each_pair do |label, link|
page.should have_link(label, href: link)
end
end
end
我知道这不是正确的做法,但我不知道该怎么做...
谢谢。
【问题讨论】:
-
你的意思是什么我知道这不是正确的做法通过查看它应该工作的代码并做你期望的事情。你有任何错误吗?我能看到的唯一副作用是所有链接都将在一个示例中运行,这可能不利于文档。
-
其实我不知道这样做是否正确,这就是我想说的更多......
-
我收到一条错误消息,我只需要等到工作日结束才能在此处复制/粘贴。我不确定我是否理解你提到的副作用。您不会推荐这种实施测试的方式吗?但无论如何,最后我的目标只是练习一些教程中没有写的代码。
标签: ruby-on-rails ruby helper utility matcher