【问题标题】:rspec test doesn't seem to connectrspec 测试似乎没有连接
【发布时间】:2013-11-06 03:37:55
【问题描述】:

我正在查看 ol hartl 教程,尽管他对测试有点疯狂,但到目前为止,我一直能够遵循,直到我完成了这个让我有点困惑的测试。我想知道你们中的一位更有经验的开发人员是否可以分享他对这个测试的逻辑:

  describe "with invalid password" do
    let(:user_for_invalid_password) { found_user.authenticate("invalid") }

    it { should_not eq user_for_invalid_password }
    specify { expect(user_for_invalid_password).to be_false }
  end

在我看来,他正在创建一个变量,该变量定义为具有无效身份验证的用户的返回值。

然后他接受所述变量并说它不应该等于自己。

然后他还说同一个变量应该是假的。

为了透明,这里是完整的测试:

describe "return value of authenticate method" do
  before { @user.save }
  let(:found_user) { User.find_by(email: @user.email) }

  describe "with valid password" do
    it { should eq found_user.authenticate(@user.password) }
  end

  describe "with invalid password" do
    let(:user_for_invalid_password) { found_user.authenticate("invalid") }

    it { should_not eq user_for_invalid_password }
    specify { expect(user_for_invalid_password).to be_false }
  end
end

谁能解释我在哪里误解了?谢谢!!

【问题讨论】:

    标签: ruby-on-rails rspec tdd


    【解决方案1】:

    我很确定这里缺少一些上下文。 it 被隐式使用,这意味着 RSpec 已经有了一个主题。它通过多种方式确定主题,有些是隐式的(基于类和describe 块名称等),有些是通过subject 关键字显式确定的。很可能在describe 块之外定义了subject

    【讨论】:

    • 感谢您的参与。我将其余的测试添加到我的帖子中。他确实将found_user 定义为正确的身份验证,但我不认为it 指的是那个。我不知道it 应该是什么意思,或者为什么它说它不应该等于自己。 (当然是指测试的invalid部分)
    • 好吧,没关系,我明白了。你提到的主题在describe 块之外的部分让我从不同的角度思考它,我发现他一定是指从第一个描述中找到的用户,该用户在他的数据库中找到并经过适当的身份验证。谢谢你!
    猜你喜欢
    • 2015-08-26
    • 1970-01-01
    • 2013-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多