首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >缺少RSpec测试方法

缺少RSpec测试方法
EN

Stack Overflow用户
提问于 2018-07-12 20:40:36
回答 2查看 529关注 0票数 1
代码语言:javascript
复制
Class Abc
   def initialize(target)
    @target = target
   end

   def method_missing(name, *params, &block)
    @target.send(name, *params, &block)
  end
end

我有像上面这样的代码,我想写上面的代码规格,什么是最好的方式来测试这一点。选项1. Abc的测试实例响应@target的方法?

EN

回答 2

Stack Overflow用户

发布于 2018-07-13 22:43:47

你的目标应该是测试行为,而不是实现,所以忘了存根和期待一个特定的方法(除非确实没有其他方法)。

还有--你的例子被从任何上下文中剥离出来。拥有它没有什么意义,除非它能给你的代码库增加一些价值。

但作为一个高层次的回答:理想情况下,您应该对每个可能的目标都有规范。您可以考虑提取这些内容作为共享示例,并像这样做一些事情

代码语言:javascript
复制
RSpec.describe Abc do
  subject { described_class.new(target) }

  context 'when the target is a string' do
    let(:target) { String.new }

    it_behaves_like 'a string'
  end

  context 'when the target is a CustomUser'
    let(:target) { CustomUser.new }

    it_behaves_like 'custom user behavior'
  end
end  

正如你所看到的--这很无聊。但是我假设Abc不是一个真实的例子,所以答案也有点抽象。

票数 3
EN

Stack Overflow用户

发布于 2018-07-13 08:26:32

  • 在您的目标上添加一个期望特定方法的期望
  • 使用该目标创建一个Abc实例
  • 调用您的abc实例上的方法
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51305966

复制
相关文章

相似问题

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