为什么upcase函数使我的rspec测试失败?

时间:2013-08-23 09:52:48

标签: ruby-on-rails ruby rspec

我正在为正在学习的网络应用开发一个登录/注销功能。

在这一周中,我无法通过以下rspec测试:

    describe "sucessfull log in" do
    let(:user) {FactoryGirl.create(:user)}

    before do
        visit signin_path
        fill_in "Email", with: user.email.upcase
        fill_in "Password", with: user.password
        click_button 'Sign in'
    end

    it {should have_title(user.name)}
    it {should have_link('Account')}
    it {should have_link('Profile', href: user_path(user))}
    it {should have_link('Sign out', href: signout_path)}
end

然后昨天再次重新编写此代码,但忘记添加.upcase函数。我只留下.upcase.email。突然,测试通过了。

好的,我是新手开发者......所以更开心的是什么?为什么upcase函数没有让rspec成功登录?

提前感谢!

1 个答案:

答案 0 :(得分:2)

为什么要提升电子邮件?如果.reverse失败,你会同样感到惊讶吗?您正在更改电子邮件地址。

严格来说,

EXAMPLE@EMAIL.COMexample@email.com不同。它可能与您的应用程序等效,但您需要让应用程序知道。

您使用的是devise吗?如果是这样,config/devise.rb文件将具有:

# Configure which authentication keys should be case-insensitive.
# These keys will be downcased upon creating or modifying a user and when used
# to authenticate or find a user. Default is :email.
config.case_insensitive_keys = [ :email ]

哪个应该使你正在做的工作。如果你没有使用它,你使用的任何框架都可能有类似的选择,如果你自己这样做,你需要自己处理它。