Giter Club home page Giter Club logo

Comments (3)

surpher avatar surpher commented on May 28, 2024

This is doing my head in. The request body goes through the same processing as response body, yet when setting matchers in a response body, everything is all good and dandy. It's not when setting matchers in request body. Odd.

from pactswift.

surpher avatar surpher commented on May 28, 2024

Narrowed it down to body only containing one dict element or more elements of only one type of matcher.

The following is OK ✅:

[
  "name": Matcher.SomethingLike("Foo"),
  "age": Matcher.IntegerLike(42) 
]

The following is NOT OK ❌:

[
  "name": Matcher.SomethingLike("Foo"),
  "age": Matcher.SomethingLike(42) 
]

// or just
[
  "name": Matcher.SomethingLike("Foo")
]

A test case for these was not written at MockServiceTests in PactSwift and PactBuilder is failing to process it properly. Oddly enough, PactBuilderTests do cover testing single Matchers and the tests pass.

from pactswift.

surpher avatar surpher commented on May 28, 2024

It appears Swift doesn't consider any of PactSwift's matchers that conform to MatcherRuleExpressible as a type of MatcherRuleExpressible if there's only one in the dictionary for body in either Request or Response. Same if Request or Response contain multiple matchers (or example generators) of the same type.

This only happens if Response or Request is set post Interaction init (eg: Interaction(...).withRequest(_:)) If Response and Request with same body as described above are passed into the Interaction initializer (eg: Interaction(_:response:request:)) then matchers that conform to MatcherRuleExpressible are considered of type MatcherRuleExpressible and all is hunky dory. 🤦‍♂️

Fixed with 7c7c96c

from pactswift.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.