测试外部服务与调试失败测试的实用指南
测试外部服务
在测试过程中,有一种测试不依赖实际的 HTTP 请求,而是定义适配器的 API。具体操作是先创建一个 User 实例,再使用 RSpec 的 instance_double 方法创建一个假的适配器,以此确保所存根的任何方法确实存在于 AvatarAdapter 类中。接着使用间谍设置期望,即头像将接收 image_url 方法。
为了让测试通过,需要在 User 类中添加如下方法:
# external/01/app/models/user.rb
def avatar_url
adapter = AvatarAdapter.new(self)
adapter.image_url
end
同时,还需要一个新的 AvatarAdapter 类:
# external/01/app/models/avatar_adapter.rb
class AvatarAdapter
def initialize(user); end
def image_url; end
end
当前, AvatarAdapter 类只是一个骨架,但足以让单元测试通过。
为何使用适配器
即便
超级会员免费看
订阅专栏 解锁全文
21万+

被折叠的 条评论
为什么被折叠?



