首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Rails 3进行paper_trail测试

用Rails 3进行paper_trail测试
EN

Stack Overflow用户
提问于 2012-11-10 04:30:13
回答 2查看 1.3K关注 0票数 1

我正在使用Rails 3中的paper_trail v2.6.3通过遵循小径来尝试一个示例。我想为一个模型编写一个规范,让我检查它在paper_trail下是否有版本,比如:

代码语言:javascript
复制
it { should be_trailed }

be_trailed应该是一个定制的rspec匹配器,它应该检查模型是否是版本的。

我该怎么写规范?

我不想恢复版本。我只想看看它是否有版本。

我在demo_app上使用它,遵循Michael的Rails教程

代码语言:javascript
复制
class User < ActiveRecord::Base
  attr_accessible :email, :name
  has_paper_trail
end 
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-10 05:21:53

如果您想知道如何编写RSpec匹配器,文档是这里

如果您询问matcher应该做什么,可以尝试检查对象是否响应paper_trail提供的方法。例如

代码语言:javascript
复制
RSpec::Matchers.define :be_trailed do
  match do |actual|
    actual.respond_to?(:versions)
  end
end
票数 2
EN

Stack Overflow用户

发布于 2014-12-11 02:56:14

共享上下文

我个人喜欢通过Rspec的共享上下文测试我的模型是否包括PaperTrail,如下所示:

./spec/support/shared_contexts/paper_trail_contexts.rb

代码语言:javascript
复制
shared_context 'a PaperTrail model' do
  it { should respond_to(:versions) }

  # You can add other assertions here as well if you like.
end

./spec/model/user_spec.rb

代码语言:javascript
复制
it_behaves_like 'a PaperTrail model'

Rspec输出

代码语言:javascript
复制
User
  behaves like a PaperTrail model
    should respond to #versions

我发现这比使用自定义匹配器(如be_trailed )更清晰、更可扩展。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13319249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档