我最近创建了一个帐户模型。在这个帐户模型中,我有一个我想要严格数字的ID。我正在尝试创建一个RSpec测试,以确保我不能输入任何字母,但我遇到了困难。
问题:如何测试我的ID以确保它不能包含任何字母?
答案 0 :(得分:0)
像这样使用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
答案 1 :(得分:0)
更好的是,你可以用一块石头杀死两只鸟,并且有这样的期望
subject.should be_eql 3
因为它具有正确的类型和正确的价值。使用eql?
可以保证id1.hash == id2.hash
虽然,您可以随时将案例分为两个期望:价值和类型。对于类型匹配,您可以使用kind_of
匹配器或在类上使用<
运算符检查继承。
subject.should be_kind_of(Numeric)
或
subject.class.should < Numeric
答案 2 :(得分:0)
默认情况下,在Rails中,您无法在primary_key属性中保存任何其他数据类型。