小编aro*_*oss的帖子

如何保持rspec测试DRY有很多"have_link"

我是Ruby on Rails的新手,我现在正在做http://ruby.railstutorial.org.

根据我的理解,该语言应该严格遵循这个DRY标准,但在本教程中涉及到测试驱动开发时,它是如此WET.

例如

it { should have_link('Users', href: users_path) }
it { should have_link('Profile', href: user_path(user)) }
it { should have_link('Settings', href: edit_user_path(user)) }
it { should have_link('Sign out', href: signout_path) }
Run Code Online (Sandbox Code Playgroud)

在这里,我们有很多行几乎看起来一样.

我试过这个

it "should have following links from this array" do
    [
        ['Users', href: users_path],
        ['Profile', href: user_path(user)],
        ['Settings', href: edit_user_path(user)],
        ['Sign out', href: signout_path]
    ].each { |a| page.should have_link(a[0], a[1]) }
end
Run Code Online (Sandbox Code Playgroud)

这段代码有效,但它看起来很丑陋而且行数更多.

所以我想知道是否有更好的方法将数组添加到have_link方法.


我现在有一个好主意,但我不知道如何使它工作.

这是我的帮手(当我创建这个问题时看起来不像它.它是在MichaëlWitrant的答案之后编辑的)

RSpec::Matchers.define :have_these_links do |*links|
    match do |actual| …
Run Code Online (Sandbox Code Playgroud)

tdd rspec ruby-on-rails ruby-on-rails-3 railstutorial.org

5
推荐指数
1
解决办法
3129
查看次数

如何在类属性中允许可以为空的Guid?

我班上有一个属性,我会选择.只有probem是该属性使用Guid并且是标准所必需的.我不知道如何使它可以为空.

我想要完成的是将membershipprovider扩展为一个新表,Groups,并在Group和Users之间建立一对多的链接.

财产:

public virtual Guid GroupId { get; set; }
public virtual Group Group { get; set; }
Run Code Online (Sandbox Code Playgroud)

那么我怎样才能使Guid属性成为可空?

c# guid class data-annotations asp.net-mvc-4

2
推荐指数
1
解决办法
3182
查看次数