Skip to content

How to randomise nested object key in buildList #78

@MRwt48

Description

@MRwt48

BuildList only randomizes the first level key value.

Example:

const factory = Factory.Sync.makeFactory({
    randomItem: Factory.each(()=> radomValueGenerator())  // using faker-js
    someObject: {
        randomNestedItem: Factory.each(()=> radomValueGenerator())
    }
})

const results = factory.buildList(3);

Expected

[
    {
        randomItem: "random value 1",
        someObject: {
            randomNestedItem: "random nested value 1",
        }
    },
    {
        randomItem: "random value 2",
        someObject: {
            randomNestedItem: "random nested value 2",
        }
    },
    {
        randomItem: "random value 3",
        someObject: {
            randomNestedItem: "random nested value 3"
        }
    }
]

Actual

[
    {
        randomItem: "random value 1",
        someObject: {
            randomNestedItem: Generator,
        }
    },
    {
        randomItem: "random value 2",
        someObject: {
            randomNestedItem: Generator
        }
    },
    {
        randomItem: "random value 3",
        someObject: {
            randomNestedItem: Generator
        }
    }
]

Also tried using

const factory = Factory.Sync.makeFactory({
    ...
    someObject: Factory.Sync.makeFactory({
        randomNestedItem: Factory.each(()=> radomValueGenerator())
    }).build()
})

but I get

[
    {
        randomItem: "random value 1",
        someObject: {
            randomNestedItem: "random nested value 1", // same value repeated
        }
    },
    {
        randomItem: "random value 2",
        someObject: {
            randomNestedItem: "random nested value 1", // same value repeated
        }
    },
    {
        randomItem: "random value 3",
        someObject: {
            randomNestedItem: "random nested value 1", // same value repeated
        }
    }
]

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions