Skip to content

feat(mock): add arrayItems faker option for reusable array item mocks - #3514

Merged
melloware merged 13 commits into
orval-labs:masterfrom
Hypenate:feat/faker-array-item-factories
Jun 2, 2026
Merged

feat(mock): add arrayItems faker option for reusable array item mocks#3514
melloware merged 13 commits into
orval-labs:masterfrom
Hypenate:feat/faker-array-item-factories

Conversation

@Hypenate

@Hypenate Hypenate commented Jun 1, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Adds opt-in faker generator option arrayItems: true to export reusable mock factories for object-like array item schemas in operation responses
  • $ref array items emit get<SchemaName>Mock (deduplicated across operations); inline object items emit get<OperationId>Response<PropertyName>ItemMock typed to match Orval's generated item aliases (e.g. GetTenants200ValueItem)
  • Operation response mocks delegate to these item factories inside .map() instead of inlining the full object body

Closes #3513

Test plan

  • Unit tests for array item factory extraction (array-item-factory.test.ts)
  • All @orval/mock package tests pass
  • Added faker-array-items spec + snapshot covering inline and $ref array items
  • CI green

Usage

mock: {
  generators: [{ type: 'faker', arrayItems: true }],
}
import { getTenantResponseModelDtoMock } from './api/tenants.faker';

const tenant = getTenantResponseModelDtoMock({ name: 'Acme' });

Summary by CodeRabbit

  • New Features

    • Added an arrayItems option to the Faker generator to emit reusable mock factory functions for object-like array items in responses.
  • Documentation

    • Updated the Faker guide with an "Array Item Factories" section and options table entry explaining behavior and interactions.
  • Tests / Examples

    • Added tests, OpenAPI spec, snapshots and mock config showcasing array-item factories.
  • Improvements

    • More stable factory naming, deduplication, and item-context handling for generated mocks.

Expose exported get<X>Mock factories for object-like array item schemas
in operation responses so consumers can reuse item-level fakers outside
of full response mocks. Closes #3513.

Co-authored-by: Cursor <cursoragent@cursor.com>
@coderabbitai

coderabbitai Bot commented Jun 1, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Adds an opt-in Faker generator option arrayItems: true that lifts object-like array item schemas into reusable exported factory functions; implements extraction logic, integrates it into mock/snapshot generation and writer imports, adds tests, refactors scalar test helpers, and documents the option.

Changes

Array Item Mock Factories

Layer / File(s) Summary
All array-item factory changes
packages/core/src/types.ts, packages/mock/src/types.ts, packages/mock/src/faker/getters/array-item-factory.ts, packages/mock/src/faker/getters/array-item-factory.test.ts, packages/mock/src/faker/getters/scalar.ts, packages/mock/src/faker/getters/scalar.test.ts, packages/mock/src/faker/getters/object.ts, packages/core/src/writers/single-mode.ts, tests/specifications/*, tests/configs/mock.config.ts, tests/__snapshots__/**, docs/content/docs/guides/faker.mdx
Introduces arrayItems?: boolean on FakerMockOptions; adds parentName to mock schema types and threads it through object/array mock resolution; implements shouldExtractArrayItemFactories, extractArrayItemMock, object-like classification, factory naming/dedup, guards (primitives, existing delegation, consolidated schemas: true), registers factory implementations/imports into splitMockImplementations, updates single-file writer import usage to include mock implementations, adds comprehensive tests and generated snapshots, refactors scalar tests to use scalarContext, and documents the new arrayItems option and behavior.

Sequence Diagram(s)

sequenceDiagram
  participant getMockScalar
  participant shouldExtractArrayItemFactories
  participant extractArrayItemMock
  participant getArrayItemFactoryNames
  participant splitMockImplementations

  getMockScalar->>shouldExtractArrayItemFactories: is extraction enabled?
  shouldExtractArrayItemFactories-->>getMockScalar: boolean
  getMockScalar->>extractArrayItemMock: attempt extraction(mapValue, items, context)
  extractArrayItemMock->>getArrayItemFactoryNames: derive factory/type names
  getArrayItemFactoryNames-->>extractArrayItemMock: names
  extractArrayItemMock->>splitMockImplementations: append factory impl (if new)
  extractArrayItemMock-->>getMockScalar: return `{...<factory>()}` or undefined
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

Suggested reviewers

  • melloware

🐰 I found array items in a row,
and gave each one a factory to grow.
Tenants now hop out neat and bright,
reusable mocks to speed the night.
Hooray for tests, docs, and code taking flight!

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

@melloware melloware added the mock Related to mock generation label Jun 1, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (2)
tests/__snapshots__/mock/faker-array-items/endpoints.ts (1)

10-14: 💤 Low value

Consider consolidating type imports in the generator.

Both import statements pull types from ./model and could be merged into a single import line. While not incorrect, consolidating would slightly improve readability of the generated output.

♻️ Suggested consolidation (for generator logic)
-import type { GetTenants200, TenantListResponse } from './model';
-
 import { faker } from '`@faker-js/faker`';
-
-import type { GetTenants200ValueItem, TenantResponseModelDto } from './model';
+import type { 
+  GetTenants200, 
+  GetTenants200ValueItem,
+  TenantListResponse, 
+  TenantResponseModelDto 
+} from './model';
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@tests/__snapshots__/mock/faker-array-items/endpoints.ts` around lines 10 -
14, Consolidate the duplicate type imports from './model' into a single import
statement: merge GetTenants200, TenantListResponse, GetTenants200ValueItem, and
TenantResponseModelDto into one `import type { ... } from './model'` so the two
separate import lines are replaced by a single consolidated import (update the
lines that currently import GetTenants200, TenantListResponse and the separate
import of GetTenants200ValueItem, TenantResponseModelDto).
tests/__snapshots__/mock/faker-array-items/model/tenantListResponse.ts (1)

9-12: 💤 Low value

Minor: Inconsistent use of interface vs type in generated models.

This file uses interface while getTenants200.ts uses type for structurally similar response shapes. For consistency, consider having the generator use a uniform declaration style across similar schema patterns.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@tests/__snapshots__/mock/faker-array-items/model/tenantListResponse.ts`
around lines 9 - 12, The generated model uses an interface (TenantListResponse)
while similar response shapes (e.g., the shape emitted for getTenants200) use a
type alias; update the generator that emits TenantListResponse so it produces a
type declaration instead of an interface (or vice‑versa across both generators)
to make declarations uniform—locate the generator logic that formats
array/object response schemas and change the emission rule for
TenantListResponse (and other list responses) to use a consistent "type" form
matching getTenants200.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@packages/mock/src/faker/getters/array-item-factory.ts`:
- Around line 52-54: isAlreadyFactoryCall currently uses an unanchored regex
that falsely matches nested factory calls; update the regex in
isAlreadyFactoryCall(mapValue: string) to anchor the match to the entire string
(start/end) and allow only an optional object spread wrapper around the call
(e.g. optional surrounding "{...}" with whitespace) so it only returns true when
mapValue is exactly a delegating spread like `{...getOwnerMock()}` or the plain
call `getOwnerMock()` and not when the call appears nested inside other text.
- Around line 144-160: array-item-factory.ts can push an exported factory
(splitMockImplementations.push(func)) that duplicates the unconditional export
emitted by faker/index.ts (factories), causing duplicate `export const
getXxxMock` declarations when hasOverrideTouchingSchema(...) suppressed
delegation; fix by checking the global set of factory names before adding the
split implementation: when preparing to push func, test whether the target
factory name (factoryName / `get${pascal(name)}Mock`) already exists in the
higher-level factories list or localFactoryNames and skip pushing if present (or
add the name to localFactoryNames and ensure faker/index.ts honors it), so only
one `export const get...Mock` is ever emitted.

---

Nitpick comments:
In `@tests/__snapshots__/mock/faker-array-items/endpoints.ts`:
- Around line 10-14: Consolidate the duplicate type imports from './model' into
a single import statement: merge GetTenants200, TenantListResponse,
GetTenants200ValueItem, and TenantResponseModelDto into one `import type { ... }
from './model'` so the two separate import lines are replaced by a single
consolidated import (update the lines that currently import GetTenants200,
TenantListResponse and the separate import of GetTenants200ValueItem,
TenantResponseModelDto).

In `@tests/__snapshots__/mock/faker-array-items/model/tenantListResponse.ts`:
- Around line 9-12: The generated model uses an interface (TenantListResponse)
while similar response shapes (e.g., the shape emitted for getTenants200) use a
type alias; update the generator that emits TenantListResponse so it produces a
type declaration instead of an interface (or vice‑versa across both generators)
to make declarations uniform—locate the generator logic that formats
array/object response schemas and change the emission rule for
TenantListResponse (and other list responses) to use a consistent "type" form
matching getTenants200.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: cd1e7a78-799e-4daa-8f88-dd2b099b3f8d

📥 Commits

Reviewing files that changed from the base of the PR and between 9835bd9 and 412ed5e.

📒 Files selected for processing (15)
  • docs/content/docs/guides/faker.mdx
  • packages/core/src/types.ts
  • packages/mock/src/faker/getters/array-item-factory.test.ts
  • packages/mock/src/faker/getters/array-item-factory.ts
  • packages/mock/src/faker/getters/object.ts
  • packages/mock/src/faker/getters/scalar.ts
  • packages/mock/src/types.ts
  • tests/__snapshots__/mock/faker-array-items/endpoints.ts
  • tests/__snapshots__/mock/faker-array-items/model/getTenants200.ts
  • tests/__snapshots__/mock/faker-array-items/model/getTenants200ValueItem.ts
  • tests/__snapshots__/mock/faker-array-items/model/index.ts
  • tests/__snapshots__/mock/faker-array-items/model/tenantListResponse.ts
  • tests/__snapshots__/mock/faker-array-items/model/tenantResponseModelDto.ts
  • tests/configs/mock.config.ts
  • tests/specifications/faker-array-items.yaml

Comment thread packages/mock/src/faker/getters/array-item-factory.ts
Comment thread packages/mock/src/faker/getters/array-item-factory.ts Outdated

@melloware melloware left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looking like linter issue

Hypenate and others added 2 commits June 1, 2026 15:29
Fix eslint issues, tighten factory-call detection, skip extraction when
schemas: true already emits consolidated factories, and add regression tests.

Co-authored-by: Cursor <cursoragent@cursor.com>
Partial test contexts omitted mock, causing runtime failures when
extractArrayItemMock runs during array scalar tests.

Co-authored-by: Cursor <cursoragent@cursor.com>
@Hypenate
Hypenate requested a review from melloware June 1, 2026 13:52
@melloware

Copy link
Copy Markdown
Collaborator

cc @wadakatu

Hypenate and others added 3 commits June 1, 2026 15:58
Merge mock-only schema types into the main import pass so single-file
outputs do not emit duplicate import type lines from the same module.

Co-authored-by: Cursor <cursoragent@cursor.com>
Refresh endpoint snapshots after single-mode mock import consolidation.

Co-authored-by: Cursor <cursoragent@cursor.com>
Drop orphaned v8.13.0 snapshot files with no master config or generated source.

Co-authored-by: Cursor <cursoragent@cursor.com>
@wadakatu

wadakatu commented Jun 2, 2026

Copy link
Copy Markdown
Contributor

Thanks for the ping @melloware — took a look at the mock side.

Nice feature 👍 One correctness issue though: the $ref array-item factories aren't actually deduplicated across operations. When the same $ref is used as an array item by more than one operation, the generated file ends up with duplicate export const get<Schema>Mock declarations and fails to compile.

Repro (arrayItems: true, no schemas: true):

paths:
  /tenants-a:
    get:
      operationId: getTenantsA
      responses:
        '200':
          description: ok
          content:
            application/json:
              schema: { $ref: '#/components/schemas/TenantListResponse' }
  /tenants-b:
    get:
      operationId: getTenantsB
      responses:
        '200':
          description: ok
          content:
            application/json:
              schema: { $ref: '#/components/schemas/TenantListResponse' }
components:
  schemas:
    TenantResponseModelDto:
      type: object
      required: [id, name]
      properties: { id: { type: string }, name: { type: string } }
    TenantListResponse:
      type: object
      properties:
        value: { type: array, items: { $ref: '#/components/schemas/TenantResponseModelDto' } }
        count: { type: integer }

Generated output:

// from getTenantsA
export const getTenantResponseModelDtoMock = (...) => ({ ... });
export const getGetTenantsAResponseMock = (...) => ({ value: [...].map(() => ({ ...getTenantResponseModelDtoMock() })), ... });

// from getTenantsB — same name again
export const getTenantResponseModelDtoMock = (...) => ({ ... });
export const getGetTenantsBResponseMock = (...) => ({ ... });
error TS2451: Cannot redeclare block-scoped variable 'getTenantResponseModelDtoMock'.

Root cause: the dedup guard in extractArrayItemMock only checks the splitMockImplementations array, but that array is re-initialized per operation (packages/mock/src/msw/index.ts:398), and the per-operation mock bodies are then concatenated without any file-level dedup (packages/core/src/writers/target.ts:73). So two operations never see each other's factories.

Scope:

  • Only the $ref case (shared get<Schema>Mock name). Inline object items are fine — they're named per operation (get<OperationId>Response<Prop>ItemMock).
  • schemas: true is also fine — hasConsolidatedSchemaFactory skips extraction and delegates to the consolidated factory.
  • So it hits exactly the $ref + multiple-operations + no schemas: true combo, which is the use case the docs highlight ("item factories without emitting every components/schemas entry"). Sharing a $ref across operations is very common, so it's easy to run into.

The current faker-array-items spec only has a single operation using the $ref, which is why the snapshots stay green — might be worth adding a second operation sharing the same $ref as a regression test once the dedup is file-scoped.

@wadakatu

wadakatu commented Jun 2, 2026

Copy link
Copy Markdown
Contributor

One more thing — this one isn't a functional bug but a scope question.

The single-mode.ts import-merge change in this PR seems to alter the output for all single-mode + mock users, not just those who opt into arrayItems. This PR updates 70 existing snapshots (angular / axios / react-query / swr / vue-query / fetch …); the bulk of the diff is mock-only type imports being hoisted from the trailing block into the main import block.

Most of that is harmless consolidation, but a few outputs now get spurious unused imports. The new filter matches an import name (and alias) against the combined implementation + mock source text via a word-boundary regex, which produces false positives on name collisions and common identifiers.

Example 1 — tests/__snapshots__/angular/custom-client/endpoints.ts:

import { HttpClient, HttpResponse as AngularHttpResponse } from '@angular/common/http';

AngularHttpResponse is never used in the body, but its search term HttpResponse matches msw's HttpResponse.json(...) in the mock code, so it gets imported (master correctly dropped it).

Example 2 — tests/__snapshots__/angular/http-resource-zod/endpoints.ts:

import { ..., map } from 'rxjs';

The rxjs map operator isn't called anywhere — the only map is the Array.prototype.map in the mock body. The search term map matches the map inside .map(, so the rxjs import is pulled in.

CI stays green because the snapshot tests are string comparisons (no noUnusedLocals typecheck on tests/__snapshots__), so these dead imports don't fail compilation — but they're still incorrect output and could trip noUnusedLocals / eslint no-unused-vars in consumer projects.

Since this import consolidation doesn't seem strictly required for arrayItems itself (the factory type imports can flow through the existing mock-import path), it might be cleaner to split it into its own PR, or at least fix the false-positive matching first. That would also keep this PR's diff focused on the new feature and easier to review.

Hypenate and others added 2 commits June 2, 2026 06:27
Track factory names on ContextSpec. Revert single-mode import merge false positives.

Co-authored-by: Cursor <cursoragent@cursor.com>
Fixes @typescript-eslint/prefer-nullish-coalescing in array-item-factory.ts.

Co-authored-by: Cursor <cursoragent@cursor.com>
@Hypenate

Hypenate commented Jun 2, 2026

Copy link
Copy Markdown
Contributor Author

@wadakatu I've made the requested changes.

@wadakatu

wadakatu commented Jun 2, 2026

Copy link
Copy Markdown
Contributor

@Hypenate thanks for the quick turnaround 🙏 Confirmed the single-mode duplicate is gone and the regression test you added covers it. Reverting single-mode.ts also dropped the unrelated snapshot churn 👍

One follow-up though: the new file-level dedup breaks the other way in tags-split / tags modes. The context.arrayItemMockFactories Set is shared across all per-tag files of the output target, so when operations in different tags (= different files) reference the same $ref, the factory is only emitted into the first file and the second file ends up with a dangling reference.

Repro (mode: 'tags-split', arrayItems: true, two tags sharing the same $ref):

paths:
  /a:
    get: { operationId: getA, tags: [alpha], responses: { '200': { description: ok, content: { application/json: { schema: { $ref: '#/components/schemas/TenantListResponse' } } } } } }
  /b:
    get: { operationId: getB, tags: [beta], responses: { '200': { description: ok, content: { application/json: { schema: { $ref: '#/components/schemas/TenantListResponse' } } } } } }
components:
  schemas:
    TenantResponseModelDto:
      type: object
      required: [id, name]
      properties: { id: { type: string }, name: { type: string } }
    TenantListResponse:
      type: object
      properties:
        value: { type: array, items: { $ref: '#/components/schemas/TenantResponseModelDto' } }
        count: { type: integer }

Generated:

  • alpha/alpha.faker.ts → defines export const getTenantResponseModelDtoMock
  • beta/beta.faker.ts → references it without defining or importing it:
...Array.from(...).map(() => ({ ...getTenantResponseModelDtoMock() }))...
beta/beta.faker.ts(16,258): error TS2304: Cannot find name 'getTenantResponseModelDtoMock'.

Behavior per mode (all verified):

mode result
single
split ✅ (mock goes into a single endpoints.faker.ts)
tags-split 🔴 TS2304
tags 🔴 TS2304

CI stays green because the faker-array-items test only exercises single-mode, so the multi-file modes aren't covered (same blind spot as the duplicate issue).

For a direction: scoping the dedup per output file rather than per context would fix it, or for the split modes, hoisting the shared factory into an importable shared file (the way schemas: true emits index.faker.ts) and importing it from each tag file. Might also be worth adding a tags-split case to the spec so this stays covered.

Dedup by tag bucket in tags/tags-split modes so each tag file defines its own shared factories.

Co-authored-by: Cursor <cursoragent@cursor.com>
@Hypenate

Hypenate commented Jun 2, 2026

Copy link
Copy Markdown
Contributor Author

@wadakatu another try 😃

Co-authored-by: Cursor <cursoragent@cursor.com>
@wadakatu

wadakatu commented Jun 2, 2026

Copy link
Copy Markdown
Contributor

Confirmed the tags-split / tags issue is fixed on the latest head 👍 While I was at it I found a few more gaps when arrayItems: true is enabled.

None of these are regressions — master and arrayItems: false generate compiling code for all of the specs below. They're cases where the new extraction logic emits broken (uncompilable, or wrong-data) code for certain array-item shapes. Plain object items, $ref-to-object items, and inline allOf items are all fine.

(1) $ref to a scalar/primitive schema

names: { type: array, items: { $ref: '#/components/schemas/Name' } }
# components.schemas.Name: { type: string, format: email }
export const getNameMock = (overrideResponse: Partial<Name> = {}): Name =>
  ({ ...faker.internet.email(), ...overrideResponse });   // Name = string
error TS2322: Type '{}' is not assignable to type 'string'.
error TS2698: Spread types may only be created from object types.

At runtime it also returns {0:'a',1:'@',...} instead of the string. isObjectLikeArrayItem returns true for any $ref without resolving the target, so scalar refs get wrapped in an object factory.

(2) inline oneOf / anyOf array item

things: { type: array, items: { oneOf: [ { $ref: '#/.../Cat' }, { $ref: '#/.../Dog' } ] } }
error TS2305: Module './model' has no exported member 'GetThings200ThingsItem'.

The item factory imports/types itself as GetThings200ThingsItem, but orval doesn't emit that alias for a composition item (the model only has Cat / Dog / GetThings200). The <Parent><Prop>Item name assumption only holds for plain object / allOf items.

(3) nullable object array item

rows: { type: array, items: { type: object, nullable: true, properties: { id: { type: string } } } }
error TS2322: Type '{ id?: string | undefined; }[]' is not assignable to type 'GetNullable200RowsItem[]'.

GetNullable200RowsItem is { id: string } | null, but the extracted factory's body / return type doesn't account for the nullable item.

(4) same property name under two parents in one operation

outer: { properties: { items: { type: array, items: { type: object, properties: { a: { type: string } } } } } }
inner: { properties: { items: { type: array, items: { type: object, properties: { b: { type: number } } } } } }

Only one factory is emitted and reused for both:

export const getGetCollideResponseItemsItemMock = (...): OuterItemsItem => ({ ...{ a: ... }, ... });
// both outer.items and inner.items call getGetCollideResponseItemsItemMock()

So inner.items is silently mocked with the outer shape ({ a } instead of { b }) — that part doesn't even error. There's also error TS2305: ... has no exported member 'OuterItemsItem' (the type name is derived from the immediate parent OuterItemsItem, while orval emits GetCollide200OuterItemsItem). The factory name is get<OperationId>Response<Prop>ItemMock, which collides when two array properties share a name in the same operation.

On the fix: in all four, turning arrayItems off falls back to inline mocks that compile fine, so a conservative guard would handle them — only extract for plain object inline items, $ref-to-object items, and allOf (all verified OK), and skip scalar / scalar-$ref, oneOf / anyOf, nullable, and name-collision cases (fall back to inline). Adding these shapes to the spec would lock it in.

@Hypenate

Hypenate commented Jun 2, 2026

Copy link
Copy Markdown
Contributor Author

@wadakatu Good catches!!

Deeper into the 🐇 🕳️ I go 😆

@Hypenate

Hypenate commented Jun 2, 2026

Copy link
Copy Markdown
Contributor Author

@wadakatu Can you review it again please?

@wadakatu

wadakatu commented Jun 2, 2026

Copy link
Copy Markdown
Contributor

Re-reviewed at f18b2bf — this all looks good now 🎉

Re-ran all four cases plus a few neighbours and everything compiles cleanly:

  • $ref→scalar, oneOf/anyOf, nullable, and the same-prop collision all fall back to inline mocks now ✅
  • $ref→composition schema and a $ref response wrapper with an inline item are handled too ✅
  • the happy path (plain object inline, $ref→object, allOf) still extracts + dedups correctly across single / split / tags-split / tags
  • @orval/mock unit tests pass and the edge shapes are now in the spec 👍

Nice work chasing all of these down. LGTM from the mock side 👍

(Minor, non-blocking: an inline object array item inside a $ref'd response wrapper — e.g. a reusable ListResponse with items: {…}[] — now skips extraction because the parent name doesn't include the operationId, so it falls back to inline. Totally safe, just a missed factory opportunity if you ever want to widen it later.)

@melloware
melloware merged commit 4591de0 into orval-labs:master Jun 2, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

mock Related to mock generation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat(faker): export reusable mock factories for array item schemas in operation responses

3 participants