1

我在轨道上使用红宝石。我也使用 minitest 框架进行测试,使用 mongoid 进行数据库。我想写一个模型测试。我的模型如下:

class Identity
  include Mongoid::Document
  include OmniAuth::Identity::Models::Mongoid

  field :name
  field :email
  field :password_digest

  validates :name, uniqueness: true
end

模型测试是:

describe Identity do
  it "must include OmniAuth::Identity::Models::Mongoid" do
    Identity.must_include OmniAuth::Identity::Models::Mongoid
  end

  it "should have name" do
    Identity.new.must_respond_to :name
  end

  it "should have email" do
    Identity.new.must_respond_to :email
  end

  it "should have password_digest" do
    Identity.new.must_respond_to :password_digest
  end

   it "should type of String" do
    Identity.new.name.type.must_equal "String"
  end
end

我的问题是关于测试字段的类型

it "should type of String" do
  Identity.new.name.type.must_equal "String"
end

如何测试字段的类型?提前致谢。

4

1 回答 1

1

只是一个提示 - 虽然不是您实际问题的答案,但通常不是那么明智的代码测试实现细节,因为它更有可能发生变化,如果您考虑通过测试进行系统验证,那么它的方式 并不重要已实现,但它做了什么,例如。它的行为方式

一个典型的例子是测试 Stack 类的功能。与其从堆栈中推送和弹出项目并检查大小,不如只推送和弹出项目,并查看如果您弹出一个空堆栈,您会得到适当的异常。当然,您要检查物品是否按后进先出 (LIFO) 顺序退回。

因此,在您的情况下,与其测试您的字段name是哪种类型,不如测试您对名称所做的操作。

于 2013-03-08T09:53:39.753 回答