Как написать тестовые случаи для ниже углового метода - PullRequest
1 голос
/ 01 ноября 2019

Я создал компонент, который открывает диалоговое окно моего пользовательского типа, я просто хочу создать тестовые примеры для Jasmine для этого метода.

export class OpenPopUpComponent implements OnInit {
    constructor(public dialog:NewCustomDialog) {}

    ngOnInit() {

    }

    openModel(){
        this.dialog.open(NewComponent,<NewCustomDialogConfig>{
            size: 'double',
            data: {
                title: 'New Dialog'
            }
        });
    }
}

Ответы [ 2 ]

1 голос
/ 03 ноября 2019

Целью модульного теста является тестирование функции самого компонента, а не начало тестирования функций, выходящих за рамки component, который должен быть протестирован. Таким образом, вам не нужно проверять dialog.open, так как это должно быть проверено в модульном тесте самого NewCustomDialog.

  1. начните с создания заглушки, которую вы можете использовать какзаполнитель для NewCustomDialog, например
export class NewCustomDialogStub{
   open(){ return null; }
   close(){ return null; }
   // and similar dummy methods which is required by "OpenPopUpComponent"
}

Введите это stub как useClass в providers, как показано ниже:
export class NewCustomDialogStub{
   open(){ return null; }
   close(){ return null; }
   // and similar dummy methods which is required by "OpenPopUpComponent"
}

describe('OpenPopUpComponent', () => {
  let component: OpenPopUpComponent;
  let fixture: ComponentFixture<OpenPopUpComponent>;

  beforeEach(() => {
    TestBed.configureTestingModule({
      imports: [],
      declaration: [OpenPopUpComponent],
      providers: [
         { provide: NewCustomDialog, useClass: NewCustomDialogStub }
      ]
    }).compileComponents();
  });

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

   it('should be defined',()=>{
     expect(component).toBeDefined();
   })

   it('should call "open" method of dialog on calling openModel() ',()=>{
      spyon(component.dialog,'open').and.callThrough();
      component.openModel();
      expect(component.dialog.open).toHaveBeenCalled();
   })   
})

Это очень простое тестирование, но если вы хотите узнать больше о написании тестов, Вы можете обратиться к этой серии статей, где я рассмотрел почти все основные сценарии тестирования . Проверьте в нижней части статьи все ссылки. Тот, который я использовал здесь , это

1 голос
/ 01 ноября 2019

Вы не будете проверять само диалоговое окно. Что вам нужно сделать, это смоделировать NewCustomDialog и предоставить его как введенный.

В ваших спецификациях

beforeEach(() => {
  const spy = jasmine.createSpyObj('NewCustomDialog', ['open']);

  TestBed.configureTestingModule({
    // Provide (spy) dependency
    providers: [
      { provide: NewCustomDialog, useValue: {newCustomDialogSpy} }
    ]
  });
  // Inject both the service-to-test and its (spy) dependency
  masterService = TestBed.get(MasterService);
  valueServiceSpy = TestBed.get(ValueService);
});

Затем вы можете проверить, что шпион был вызван с параметрами (те, которые вы ожидаете).

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