Closed Z2Flow closed 4 months ago
Wrong contract?
class Person
include Contracts::Core
include Contracts::Builtin
Contract KeywordArgs[name: String, field: Symbol, value: String] => Any
def initialize(name:, field:, value:)
@name = name
@field = field
@value = value
end
end
Person.new(name: "Jane", field: "field", value: "value")
ParamContractError: Contract violation for argument 1 of 1:
Expected: (KeywordArgs[{:name=>String, :field=>Symbol, :value=>String}]),
Actual: {:name=>"Jane", :field=>"field", :value=>"value"}
Value guarded in: Person::initialize
With Contract: KeywordArgs => Any
At: (pry):18
That was it. Thanks @PikachuEXE
This works:
in that
field
passed as a String is detected and flagged as an error.This does not:
field: "field"
is not detected.