RSpec测试非整数

时间:2013-11-12 23:29:39

标签: ruby-on-rails rspec

我最近创建了一个帐户模型。在这个帐户模型中,我有一个我想要严格数字的ID。我正在尝试创建一个RSpec测试,以确保我不能输入任何字母,但我遇到了困难。

问题:如何测试我的ID以确保它不能包含任何字母?

3 个答案:

答案 0 :(得分:0)

像这样使用kind_of

object.should be_a_kind_of(Numeric)

来自documentation

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属性中保存任何其他数据类型。