类: RSpec::Matchers::MatcherProtocol

继承
Object
  • Object
显示全部
定义于
lib/rspec/matchers/matcher_protocol.rb

概述

注意

此类在运行时不会由 rspec-expectations 加载。它仅用于提供匹配器协议的文档。

rspec-expectations 可以与实现此协议的任何匹配器对象一起使用。

必需方法 折叠

可选方法 折叠

实例方法详细信息

#actualString, Object

注意

如果 diffable? 返回 true,则需要此方法。

用于差异的实际值。

返回值

  • (String, Object)

    如果提供了一个对象(而不是字符串),RSpec 将使用 pp 库将其转换为多行输出以进行差异化。


    
# File 'lib/rspec/matchers/matcher_protocol.rb', line 88

#descriptionString

描述用于两件事

  • 当使用 RSpec 的单行语法时(例如 it { is_expected.to matcher }),由于您没有提供文档字符串,因此描述用于生成示例的文档字符串。
  • 在组合匹配器表达式中,描述用作外部匹配器的失败消息(和描述)的一部分。

返回值

  • (String)

    匹配器的描述。


    
# File 'lib/rspec/matchers/matcher_protocol.rb', line 42

#diffable?Boolean

指示此匹配器提供 actualexpected 属性,并且这些属性返回的值可以有效地进行差异化,可以包含在输出中。

返回值

  • (Boolean)

    如果 actualexpected 可以进行差异化,则为 true。


    
# File 'lib/rspec/matchers/matcher_protocol.rb', line 82

#does_not_match?(actual) { ... } ⇒Boolean

在负向期望中,例如 expect(x).not_to foo,如果定义了此方法,RSpec 将调用 foo.does_not_match?(x)。如果未定义,它将回退到使用 !foo.matches?(x)。这允许您为负向情况提供自定义逻辑。

参数

  • actual (Object)

    正在匹配的对象。

产量

  • 对于类似 expect(x).not_to matcher do...end 的表达式,do/end 块绑定到 not_to。如果存在,它将该块传递给此方法。

返回值

  • (Boolean)

    如果此匹配器与提供的对象不匹配,则为 true。


    
# File 'lib/rspec/matchers/matcher_protocol.rb', line 24

#expectedString, Object

注意

如果 diffable? 返回 true,则需要此方法。

用于差异的预期值。

返回值

  • (String, Object)

    如果提供了一个对象(而不是字符串),RSpec 将使用 pp 库将其转换为多行输出以进行差异化。


    
# File 'lib/rspec/matchers/matcher_protocol.rb', line 95

#expects_call_stack_jump?Boolean

注意

此方法很少使用或需要。

注意

如果未定义,RSpec 假设此方法的值为 false

指示当此匹配器在块期望表达式中使用时,它期望块使用会导致调用堆栈跳转的 ruby 结构(例如引发错误或抛出符号)。

这在内部用于复合块表达式,因为期望调用堆栈跳转的匹配器必须谨慎处理才能正常工作。

返回值

  • (Boolean)

    如果匹配器期望调用堆栈跳转,则为 true


    
# File 'lib/rspec/matchers/matcher_protocol.rb', line 69

#failure_messageString

只有当 #matches? 返回 false 时才会调用。

返回值

  • (String)

    失败的解释。


    
# File 'lib/rspec/matchers/matcher_protocol.rb', line 16

#failure_message_when_negatedString

注意

此方法被列为可选,因为匹配器不必支持否定。但是,如果您的匹配器确实支持否定,则这是必需的方法 - 否则,您将收到 NoMethodError

只有当负向匹配失败时才会调用。

返回值

  • (String)

    失败的解释。


    
# File 'lib/rspec/matchers/matcher_protocol.rb', line 35

#matches?(actual) { ... } ⇒Boolean

如果此匹配器与提供的对象匹配,则返回 true。

参数

  • actual (Object)

    正在匹配的对象。

产量

  • 对于类似 expect(x).to matcher do...end 的表达式,do/end 块绑定到 to。如果存在,它将该块传递给此方法。

返回值

  • (Boolean)

    如果此匹配器与提供的对象匹配,则为 true。


    
# File 'lib/rspec/matchers/matcher_protocol.rb', line 10

#supports_block_expectations?Boolean

注意

如果未定义,RSpec 假设此方法的值为 false

指示此匹配器可以在块期望表达式中使用,例如 expect { foo }.to raise_error。一般来说,这仅适用于对块的副作用而不是特定对象进行操作的匹配器。

返回值

  • (Boolean)

    如果此匹配器可以在块表达式中使用,则为 true。


    
# File 'lib/rspec/matchers/matcher_protocol.rb', line 55

#supports_value_expectations?Boolean

注意

如果未定义,RSpec 假设此方法的值为 true

指示此匹配器可以在值期望表达式中使用,例如 expect(foo).to eq(bar)

返回值

  • (Boolean)

    如果此匹配器可以在值表达式中使用,则为 true。


    
# File 'lib/rspec/matchers/matcher_protocol.rb', line 63