ng-mocks icon indicating copy to clipboard operation
ng-mocks copied to clipboard

Bug: fixture.getDeferBlocks() returns no defer blocks if we want to use any ng-mocks mock inside the test

Open edekovacsgalambos opened this issue 1 year ago • 4 comments

Description of the bug

There a problem when trying to use ng-mocks in test which would like to use tools for new @defer block testing, the problem is: fixture.getDeferBlocks(); will return no defer blocks if we have any ng-mocks mock inside the test.

An example of the bug

Here is minimalistic example to reproduce

angular-jest-defer-ng-mock.zip

check test-defer.component.spec.ts in the example project

if we comment out .overrideComponent(...) from component ts file and <test-child-defer /> line from template, the test will pass.

Expected vs actual behavior

Mocking components with ng-mock has no effect on fixture.getDeferBlocks() functioning, it will return defer block correctly.

edekovacsgalambos avatar Dec 13 '23 16:12 edekovacsgalambos

While we are waiting for the solution, this is my workaround:

.overrideComponent(TestDeferChildComponent, {
        set: {
          template: '<div>TestDeferChildComponent</div>',
        },
      })

The inputs and other meta configuration will be the same. Injected services into child component will be resolved by TestBed. Not perfect because MockComponent(TestDeferChildComponent) would be nicer and shorter, but for now, it works. However it won't hide dependencies of the child.

csaszika avatar Jan 28 '24 13:01 csaszika

Hi! Any news on this? I have exactly the same issue and I can't use the workaround as I need to prevent the child component to pull all its dependencies.

a-audusseau avatar Jul 04 '24 08:07 a-audusseau

@satanTime Can you give us an update, will it be investigated/fixed? what do you think?

csaszika avatar Aug 25 '24 11:08 csaszika