gpt4 book ai didi

ruby-on-rails - Rspec 中 expect 和 is_expected.to 的区别

转载 作者:太空宇宙 更新时间:2023-11-03 17:46:13 25 4
gpt4 key购买 nike

这些关键字之间有什么区别。

在下面的例子中,使用expect通过了测试,而is_expected.to没有通过。

它 { expect validate_uniqueness_of(:access_token) }

它 { is_expected.to validate_uniqueness_of(:access_token) }

测试由 Devise 生成的 User

class User < ActiveRecord::Base
devise :lockable, :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable

validates :access_token, uniqueness: true

before_validation :generate_access_token!, on: :create

def generate_access_token!
begin
self.access_token = Devise.friendly_token
end while User.find_by(access_token: self.access_token)
end
end

最佳答案

is_expected_to 只是一个较短的写法

expect(subject).to

您的第一个规范通过了,因为它实际上根本没有测试任何东西。

第二个规范失败,因为没有唯一性验证。尽管您的代码正在处理重复项(但具有与验证相同的竞争条件),但它是以不同的方式处理的:它生成一个新 token ,而不是报告错误。验证匹配器通常通过检查对象的 errors 散列来工作,而您的代码未设置该散列,因此规范失败。

关于ruby-on-rails - Rspec 中 expect 和 is_expected.to 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36832428/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com