用途:RSpec Mocks 为 RSpec 提供测试替身,用于把被测代码与外部依赖隔离,适合 Ruby 单元测试中替代数据库、HTTP、邮件等外部协作对象。
主要能力:提供四种替身类型——Double(纯测试对象)、Verifying Double(校验真实类接口)、Partial Double(真实对象上桩部分方法)、Spy(记录调用以便事后验证)。可创建匿名或命名 double,用 allow(...).to receive(...) 桩方法,并用 and_return、and_raise、and_throw、and_yield、and_call_original 控制行为;支持一次返回多个值、block 返回值、连续多次 yield。消息期望用 expect(...).to receive(...),可约束调用次数(once、twice、exactly(n).times、at_least、at_most、not_to)与调用顺序(ordered)。参数匹配支持精确值、anything、any_args、no_args、instance_of、kind_of、正则、hash_including、array_including 及 satisfy 自定义匹配。Spy 风格在动作后用 expect(...).to have_received(...) 验证,另有 instance_spy、as_null_object 等辅助。
使用方式:在 spec 中创建替身并桩方法后运行 RSpec 测试;可在 spec_helper.rb 中通过 config.mock_with :rspec 设置 verify_partial_doubles 与 verify_doubled_constant_names。
限制与建议:资料建议优先使用验证替身而非普通 double,优先 spy 风格,避免过度 mock,mock 应针对外部边界;allow_any_instance_of 被视为易碎做法,更推荐依赖注入。以上为资料明确内容,其他细节暂未提供。