• 库: rspec/rspec-expectations matcher匹配器常用


    https://github.com/rspec/rspec-expectations

    https://relishapp.com/rspec/rspec-expectations/v/3-7/docs 

    总文档连接: 

    RSpec.info/documentation/ 

    be_completed是Predicate matchers

    expect(actual).to be_xxx  #passes if actual.xxx? 


     RSpec::Expectations lets you express expected outcomes on an object in an example.

    Built-in matchers

    expect(actual_value).to eq(expected_value) 

    expect(actual_value).to be >= expected_value   包括>, < , <=, >=

    expect(actual_value).to match(/expression/)  正则表达式(expect不支持匹配符号 =~)

    expect(array).to all(inner_matcher)    #让array通过inner_matcher

    如:expect([1,2,3]).to all(be_truthy) 

    expect(array).to contain_exactly(expected_array) #如果实际的和期待的数组包含相同的元素,则期待成功。不考虑顺序。

    contain_exactly等同于match_array 

    expect(actual).to exist 

    Collection membership

    expect(actual).to include(expected)  #actual可以是数组,字符串,hash.

    例子:expect([1,2,3]).to include(1,2), expect({:a => "b"}).to include(:a => "b")

    include的变型, start_with, end_with

    Types/classes 

    expect(actual).to be_an_instance_of(expected) 

    # passes if actual.class == expected

    expect(actual).to be_a(expected)  #passes if actual.kind_of?(expected) 

    Predicate matchers 

    expect(actual).to be_xxx   #passes if actual.xxx?

    expect(actual).to have_xxx(:arg) #passes if actual.has_xxx?(:arg) 

    expect(actual).to have_attributes(key/value pairs) 

    Truthiness

    expect(actual).to be_truthy/falsy     # passes if actual is truthy (not nil or false) 

    expect(actual).to be true/false  #passes if actual == true/false

    expect(actual).to be_nil   #passes if actual is nil 

    expect(actual).to_not be_nil   #passes if actual is not nil 

    Ranges

    expect(1..10).to cover(3) 

    expect(actual).to be_between(min, max)

    Expecting errors 

    expect { ... }.to raise_error
    expect { ... }.to raise_error(ErrorClass)
    expect { ... }.to raise_error("message")
    expect { ... }.to raise_error(ErrorClass, "message")

     expect可以用于block也可以用于value expectations.

    Expecting throws and Yielding没看懂⚠️

    Compound Matcher Expressions

    通过user,or可以创建混合匹配表达式 。

    expect(stoplight.color).to eq("red").or eq("green").or eq("yellow") 

    expect(alphabet).to start_with("a").and end_with("z") 

    Composing Matchers

    以下matchers接受matchers 作为参数。

    • change().by(matcher) #改变sth等于by(匹配的值)
    • change{}.from(mather).to(matcher) #改变sth,从matcher_val到mather_val
    • include(matcher, matcher)
    • include(:key => matcher, :other => mathcer)
     等等:详细见https://relishapp.com/rspec/rspec-expectations/v/3-7/docs/composing-matchers

    ‘change’ matcher:

    • expect {do_sth}.to change(object, :attribute)
    • expect {do_sth}.to change{object.attribute} 
    • 可以联合  from().to();  by(), by_at_least(), by_at_most()

    Relish(n:great enjoyment; 水果蔬菜酱) 案例连接 

  • 相关阅读:
    【转】如何解决Verilog中参数化的赋值:赋全0,赋全1,赋全Z,赋全x
    【转】PCIe DMA
    【转】PCIe学习(二)——PCIe DMA关键模块分析之一
    PCIe配置空间
    [转]PCIe学习笔记之MSI/MSI-x中断及代码分析
    [转]常用通信接口保护电路
    [转]原理图和PCB元件对应查找--Altium Designer
    [原]PCB中MARK点制作
    [转]使用Altium Designer软件铺铜后再挖铜
    支持Json进行操作的Javascript类库TAFFY DB
  • 原文地址:https://www.cnblogs.com/chentianwei/p/9058205.html
Copyright © 2020-2023  润新知