Skip to content

Known limitations

Mockifyr’s correctness is proven differentially against real Java WireMock in CI: the same scenario is loaded into both, the same request is driven through both, and the responses are compared. This page lists what that testing has deliberately left out or deferred — so you find it here rather than the hard way.

Response bodies

bodyFileName — a response body loaded from a __files/ directory — is not implemented. The stub still matches, but the response body is empty.

See responses.

Matching

AreaLimitation
equalToIgnoreCaseNot a key — use equalTo with caseInsensitive
Empty request bodyCounts as absent, so equalTo "" does not match
Equal prioritiesTie-breaking is load-path dependent — give stubs distinct priorities when order matters
clientIpNot supported
equalToNumber, greaterThanNumber and siblingsNot supported
JSON Schema Draft 4 (V4)Unsupported
Multi-value headersNot claimed — multi-value matching is verified on query parameters only
matchesJsonPathFilter functions such as .length(), and some type-coercion edges, are deferred
XMLExplicit namespaceAwareness modes and mixed content are deferred

clientIp and the standalone number matchers are WireMock Cloud features that open-source WireMock itself rejects, so there is no oracle to test against and Mockifyr does not support them.

Date/time matching does not support:

  • now-relative expected values
  • expectedOffset
  • The truncation options
  • Anything outside the pattern subset shared by Java and .NET, for actualFormat

See request matching.

Templating

There is no add, subtract, multiply, divide, round, abs or soapXPath helper. Arithmetic is the single math helper, and it supports only + - * /.

Helper areaLimitation
systemValueDeny-by-default, with no allowlist
FakerExpressions taking arguments (for example Number.numberBetween) and locale selection are unsupported
JWTHS256 and RS256 only; no configurable signing secret, no nbf, no array or object claims

See templating and the template helper reference.

Delays and faults

Only the uniform delay distribution is parsed — anything else is silently ignored, with no error and no delay. Lognormal and chunkedDribbleDelay are not implemented.

Byte-level fault fidelity is not reproduced: all four faults surface to a client identically, as a failed request. See delays and faults.

Proxying

  • removeProxyRequestHeaders is deliberately not implemented — WireMock itself still forwards the header, so implementing it would diverge from the oracle rather than match it.
  • Response-header rewriting is not implemented.

See proxying.

Record and playback

The recording session is global rather than tenant-scoped. Also not implemented:

FeatureStatus
Record filtersNot implemented
allowNonProxiedNot implemented
__files body extractionNot implemented
Response transformers on generated stubsNot implemented
Repeat requests generating a scenarioNot implemented

See record and playback.

Unmatched requests

When nothing matches, only the 404 status is served. WireMock’s verbose near-miss diagnostic body is not reproduced.

Persistence

  • Reload from a plain mappings directory covers only the default tenant, at startup.
  • WireMock’s per-stub persistent: false opt-out is not supported: with a root directory set, every admin mutation persists.
  • The change feed does not cover environments, so multi-instance hosts pick up environment changes only after a restart.
  • Environment values are plaintext — there is no secret type.

See persistence.

gRPC

Multi-message streams and bidirectional streaming are not supported: the WireMock gRPC extension lacks them, so there is no oracle to test against. There is also no gRPC-specific admin reset. See gRPC.

WebSocket

Per-path or per-pattern channelTarget, binary frames, and listing or resetting message mappings are not supported.

See WebSocket.

Extension seams not yet wired

Seam
IResponseDefinitionTransformer
ITemplateModelProvider
IRequestFilter
Template-helper hash arguments
Helper providers

See extending Mockifyr.

Anything else

If Mockifyr behaves differently from WireMock in a way that is not on this list, that is a bug worth reporting at https://github.com/omercelikdev/mockifyr/issues. Per-feature parity notes — including the behaviours the differential harness discovered — live in the repository’s docs/parity/ directory.

Message channels (email & SMS)

  • The message inbox is in-memory only — messages do not survive a restart (stubs do, via the persistence providers).
  • No inbound simulation: Mockifyr never initiates a message toward your application (no incoming-SMS webhooks, no Twilio status callbacks yet).
  • SMTP fault directives are tenant-wide, not rule-based; STARTTLS is not implemented.
  • twilio is the only SMS provider profile so far; other providers can still be mocked with ordinary stubs.