RSpec 和 ActiveModel

2024-04-15

我有一个模块,它包含 activemodel,我想使用 rspec 测试它。

这是我到目前为止的设置:

lib/
 |__ my_module/
 |    |__ base.rb 
 |__ my_module.rb
spec/
 |__ my_module_spec.rb
 |__ spec_helper.rb
 |__ support/
      |__ shared_examples/
           |__ active_model.rb

在“my_class.rb”内:

require "active_model"
require "my_module/base"

在'base.rb'内:

module MyModule
  class Base
    extend ActiveModel::Naming

    include ActiveModel::Conversion
    include ActiveModel::Validations
  end
end

在“my_module_spec.rb”内:

require 'spec_helper'

describe MyModule do
  describe MyModule::Base do
    it_behaves_like "ActiveModel"
  end
end

在“spec_helper.rb”内:

$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
$LOAD_PATH.unshift(File.dirname(__FILE__))
require 'rspec'
require 'my_module'

# Requires supporting files with custom matchers and macros, etc,
# in ./support/ and its subdirectories.
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}

RSpec.configure do |config|
end

在“active_model.rb”内:

# taken from http://pivotallabs.com/users/jdean/blog/articles/1706-form-backing-objects-for-fun-and-profit

shared_examples_for "ActiveModel" do
  require 'test/unit/assertions'
  require 'active_model/lint'
  include Test::Unit::Assertions
  include ActiveModel::Lint::Tests

  before do
    @model = subject
  end

  ActiveModel::Lint::Tests.public_instance_methods.map { |method| method.to_s }.grep(/^test/).each do |method|
    example(method.gsub('_', ' ')) { send method }
  end
end

我以为我的设置没问题,但是当我尝试运行时bundle exec rspec spec我收到这些错误:

Failures:

  1) MyModule MyModule::Base behaves like ActiveModel test to key
     Failure/Error: example(method.gsub('_', ' ')) { send method }

  2) MyModule MyModule::Base behaves like ActiveModel test to param
     Failure/Error: example(method.gsub('_', ' ')) { send method }

  3) MyModule MyModule::Base behaves like ActiveModel test to partial path
     Failure/Error: example(method.gsub('_', ' ')) { send method }

  4) MyModule MyModule::Base behaves like ActiveModel test valid?
     Failure/Error: example(method.gsub('_', ' ')) { send method }

  5) MyModule MyModule::Base behaves like ActiveModel test persisted?
     Failure/Error: example(method.gsub('_', ' ')) { send method }

  6) MyModule MyModule::Base behaves like ActiveModel test model naming
     Failure/Error: example(method.gsub('_', ' ')) { send method }

  7) MyModule MyModule::Base behaves like ActiveModel test errors aref
     Failure/Error: example(method.gsub('_', ' ')) { send method }

  8) MyModule MyModule::Base behaves like ActiveModel test errors full messages
     Failure/Error: example(method.gsub('_', ' ')) { send method }

我在这里做错了什么?如何正确测试 ActiveModel?

提前致谢


你尝试做的事情太多了。因为您想测试 ActiveModel 库。您只需要测试您的对象是否包含此模块


require 'spec_helper'

describe MyModule do
  describe MyModule::Base do
    it { MyModule::Base.should include(ActiveModel::Conversion) }
    it { MyModule::Base.should include(ActiveModel::Validations) }
  end
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RSpec 和 ActiveModel 的相关文章

随机推荐

  • 带参数的 C# ReportViewer 本地报表

    大家下午好 过去 2 周的大部分时间我都在寻求有关 C WinForm 应用程序问题的帮助 我有一个表单 其中有一个 DataGridView 显示从数据库中提取的详细信息 当用户双击该网格中的一行时 代码从 CustomerID 列中获取
  • 重新实例化列表或调用clear()的更好做法

    使用 Java 1 6 是在 List 上调用 clear 方法更好还是只是重新实例化引用更好 我有一个 ArrayList 其中填充了未知数量的对象 并定期 刷新 处理对象并清除列表 一旦刷新 列表就会再次填满 刷新是随机发生的 列表中的
  • 如何检查 CGPoint 是否已初始化?

    我想最初将 CGPoint 属性设置为特定点 屏幕中间 随后其他方法可能希望更改此属性 我的想法是如果 getter 中为空则初始化它 但我收到消息 invalid argument type struct CGPoint to unary
  • 使用 onclick 调用 Javascript 函数[重复]

    这个问题在这里已经有答案了 我对这段代码有疑问 当我单击按钮时 它应该执行 hello 功能并打开警报 但它不起作用 function hello alert hi document getElementById one onclick h
  • 在 DataFrame 索引中查找标签位置

    我有一个熊猫数据框 import pandas as pnd d pnd Timestamp 2013 01 01 16 00 dates pnd bdate range start d end d pnd DateOffset days
  • 检测何时从单元格本身中选择自定义单元格?

    我创建了一个自定义UITableViewCell 以及故事板设计器中用于布局的 XIB 我了解父表视图如何通过触发通知单元格选择didSelectRowAtIndexPath 但我似乎无法弄清楚如何捕获单元格本身内的单元格选择 有人能在这里
  • HttpUtility.UrlEncode 是否符合“x-www-form-urlencoded”的规范?

    Per MSDN http msdn microsoft com en us library ms525738 aspx URLEncode 转换字符如下 空格 转换为加号 非字母数字字符将转义为其十六进制表示形式 与以下类似 但不完全相同
  • WebRTC 局域网内是否需要 STUN 服务器?

    我使用Webrtc开发了一个p2p视频聊天 我知道需要 STUN 或 TURN 服务器来识别 NAT 后面的公共 IP 目前正在使用 Google 的 STUN 服务器 我的应用程序安装在连接到 LAN 的服务器上 但无法访问互联网 我是否
  • PHP gzuncompress 出现文件读写错误

    我有一个函数可以跟踪脚本中发生的事件 为了有效地利用我的资源 我决定压缩它生成的数据 但是 我不断收到此错误 Unknown error type 2 gzuncompress function gzuncompress data erro
  • Javascript 删除事件监听器不工作

    我有以下代码来添加事件监听器 area addEventListener click function event app addSpot event clientX event clientY app addFlag 1 true 它按预
  • 如何防止全景图在 Windows Phone 7 应用程序中从最后一项滚动到第一项

    是否可以防止当用户查看最后一个 PanoramaItem 时 他可以进一步向右滚动 返回到第一个 PanoramaItem 反之亦然 防止通过向左滑动从第一个滚动到最后一个 我问这个是因为在我的应用程序中我有一个只有 2 个 Panoram
  • 将基本 Access 查询条件表示为正则表达式

    我熟悉 Access 的查询和过滤条件 但我不确定如何将类似的语句表达为正则表达式模式 我想知道是否有人可以帮助将他们与我理解的一些简单示例联系起来 如果我使用正则表达式来匹配 Access 等字段 我将如何表达以下语句 示例与此中找到的示
  • 为什么 ImageView 无法在 SystemClock.sleep() 之前更新

    我想在翻转旧图像后 3 秒内在 ImageView 中显示其他图像 代码 OnClickListener oc new OnClickListener Override public void onClick View v ImageVie
  • Jobb 崩溃 FAT 已满

    我尝试使用 jobb 库编译视频 问题是 jobb 崩溃 视频大小超过 500 MB 以下是有关此问题的一些信息 java io IOException FAT Full 459872 459873 at de waldheinz fs f
  • 检查字符串是否是编译时已知的文字字符串?

    我正在编写一个库 并且我有一个接受字典的方法 字典的值是不可信 不安全的 但密钥是可信的 如果最终用户能够输入任意密钥名称 那么可能会发生 坏事 所以当其他开发者使用这个库函数时 我想强制他们在编译时知道键名 所以这样的事情是被允许的 st
  • 不知道如何在给定私钥和消息的情况下生成 ECDSA 签名

    我正在跟进苹果的指南 https developer apple com library ios documentation DataManagement Conceptual CloutKitWebServicesReference Se
  • 两个非常相似的集合之一上的“‘dimnames’[2] 的长度不等于数组范围”

    我在两个数据框中收集了数据vols and flow 后者可以转换为矩阵 但第一个不能 as matrix vols Error in colnames lt tmp value c CanovesSamalus Llinars lengt
  • PHPExcel 一起单元格包含相同的数据问题

    当我使用 PHPExcel 类读取 ods 文件 xls 和 xlsx 都可以 并且两个单元格在一起并包含相同的数据时 第二个单元格变为空白 这是一个错误吗 这是我的代码
  • 解压...缺少参数

    我正在编写一个接受可变数量参数的函数 此外 我希望用户能够将其中一些参数保留为缺失 只考虑转动的任务 到参数列表中 这是我的第一次尝试 f lt function list 这失败了 f 1 2 Error in f 1 2 argumen
  • RSpec 和 ActiveModel

    我有一个模块 它包含 activemodel 我想使用 rspec 测试它 这是我到目前为止的设置 lib my module base rb my module rb spec my module spec rb spec helper