Жасмин угловой 4 модульный тест router.url - PullRequest
0 голосов
/ 15 ноября 2018

Я выполняю модульное тестирование функции в проекте angular 4, используя жасмин, оператор переключения, как упомянуто ниже:

    switch(this.router.url) {

    case 'firstpath': {
               // some code
            }
        break;
    case 'secondpath': {
               // some more code
            }
       break;
    default:
        break;

    }

В моем файле spec.ts. Я не могу заглушить или изменить значение router.url. Я хочу, чтобы мои дела выполнялись, но по умолчанию выполняется. Я пробовал разные способы установить или spyOn и вернуть значение, но каждый раз URL-адрес "/". Каждое предложение или решение будет приветствоваться.

1 Ответ

0 голосов
/ 15 ноября 2018

Сначала вам нужно смоделировать маршрутизатор в модуле тестирования:

TestBed.configureTestingModule({
  ...
  providers: [
    {
       provide: Router,
       useValue: {
          url: '/path'
       } // you could use also jasmine.createSpyObj() for methods
    } 
  ]
});

Вы также можете изменить URL-адрес в тесте и запустить тестируемый метод:

const router = TestBed.get(Router);
router.url = '/path/to/anything';
// now you can run your tested method:
component.testedFunction();

Как вы упомянулиspyOn не работает, потому что работает только для методов / функций.Но url является собственностью.

...