我最近创建了一个帐户模型。在这个帐户模型中,我有一个我想要严格数字的 id。我正在尝试创建一个 RSpec 测试,以确保我无法输入任何字母,但遇到了困难。
问题:如何测试我的 id 以确保它不能包含任何字母?
我最近创建了一个帐户模型。在这个帐户模型中,我有一个我想要严格数字的 id。我正在尝试创建一个 RSpec 测试,以确保我无法输入任何字母,但遇到了困难。
问题:如何测试我的 id 以确保它不能包含任何字母?
kind_of
像这样使用:
object.should be_a_kind_of(Numeric)
从文档中:
3.should be_a_kind_of(Fixnum) => 3.kind_of?(Numeric) #passes
3.should be_a_kind_of(Numeric) => 3.kind_of?(Numeric) #passes
3.should be_an_instance_of(Fixnum) => 3.instance_of?(Fixnum) #passes
3.should_not be_instance_of(Numeric) => 3.instance_of?(Numeric) #fails
更好的是,你可以用这样的期望一石二鸟
subject.should be_eql 3
因为它将具有正确的类型和正确的值。使用eql?
保证你id1.hash == id2.hash
虽然,您总是可以将您的案例分为两个期望:价值和类型。对于类型匹配,您可以使用kind_of
匹配器或使用类上的运算符检查继承<
。
subject.should be_kind_of(Numeric)
或者
subject.class.should < Numeric
默认情况下,在 Rails 中,您不能在 primary_key 属性中保存任何其他数据类型。