Ionic3 - Тестирование.Проверьте, нажата ли Страница в NavigationStack - PullRequest
0 голосов
/ 11 декабря 2018

Я действительно новичок в тестировании.Я настроил TedBed.Теперь я пытаюсь протестировать мой первый компонент "MyApp", который выглядит следующим образом:

@Component({
  templateUrl: 'app.html'
})
export class MyApp implements OnInit {
  rootPage:any = HomePage;

  constructor(
    private app:App, 
   ) {

  }

  pageTwo() {
    let navs = this.app.getActiveNavs();
    let nav = navs[0]
    nav.push(AnotherPage);
  }


  ngOnInit() {

  }
}

Шаблон:

<ion-menu [content]="content" persistent="true">
    <ion-header>
        <ion-navbar>
            <ion-title>
                MyApp
            </ion-title>
        </ion-navbar>
    </ion-header>
    <ion-content>
        <ion-list>
            <button menuClose (click)="pageTwo()" ion-item>
                <ion-label>
                    AnotherPage
                </ion-label>
            </button>
        </ion-list>
    </ion-content>
</ion-menu>
<ion-nav [root]="rootPage" #content swipeBackEnabled="false"></ion-nav>

Как вы видите, у меня есть метод, который можно перейти к "AnotherPage ", если нажата кнопка меню.Это работает - теперь я пытаюсь проверить это поведение:

describe('MyApp Component', () => {
  let fixture;
  let component;

  beforeEach(async(() => {
    TestBed.configureTestingModule({
      declarations: [MyApp],
      imports: [
        IonicModule.forRoot(MyApp),
      ],
      providers: [
        {provide: NavController, useFactory: () => NavControllerMock.instance()},
        {provide: App, useFactory: () => AppMock.instance()},
      ]
    })
  }));

  beforeEach(() => {
    fixture = TestBed.createComponent(MyApp);
    fixture.detectChanges();
    component = fixture.componentInstance;
  });

  it('should be created', () => {
    expect(component instanceof MyApp).toBe(true);
  });

  it('should navigate to Antoherpage if pageTwo() is called', () => {
    component.pageTwo()
    // ...
  });


});

Я понятия не имею, что мне нужно сделать, чтобы проверить, передается ли "AnotherPage" в Navstack после вызова метода "pageTwo".

Заранее спасибо

1 Ответ

0 голосов
/ 14 декабря 2018

Итак, после некоторого исследования я получил его на работу.Это было проще, чем я думал:

  it('should navigate to Antoherpage if pageTwo() is called', () => {
    component.pageTwo()
    expect(nav.push).toHaveBeenCalledWith(AnotherPage);
  });

, поскольку я использую пакет ionic-mocks (https://github.com/stonelasley/ionic-mocks). Мне не нужно шпионить за nav.push вручную.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...