0

I am using Angular 18 with Angular testing library: my issues is that I am able access route param as required input signal. However when I run the tests that depends on this input it's complaining that Input is required but no value available yet error.

How to provide this to My test in ATL so I can use the input.

1 Answer 1

1

Create a mock ParamMap that simulates route parameters, then create a mock ActivatedRoute that returns the mock ParamMap as an Observable.

Using this approach you can test both the initial route parameter binding and parameter changes (by calling next with a new ParamMap on paramMapSubject and then calling fixture.detectChanges())

  const paramMapSubject = new Subject<ParamMap>();

  const createParamMap = (id: string): ParamMap => ({
    get: (param: string) => param === 'id' ? id : null,
    getAll: (param: string) => param === 'id' ? [id] : [],
    has: (param: string) => param === 'id',
    keys: ['id']
  });

  async function setup() {
    return render(ExampleComponent, {
      providers: [
        {
          provide: ActivatedRoute,
          useValue: {
            paramMap: paramMapSubject.asObservable()
          }
        }
      ]
    });
  }
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.