SnackBar в файле спецэффектов - PullRequest
0 голосов
/ 28 октября 2019

Я пытаюсь проверить мой файл спецификации эффекта. Я использую matSnackBar в файле эффекта. когда я запускаю его, _snackbar объявляется как неопределенное, а затем поле тестов. вот что я пытался сделать:

describe('InquiryWizardEffects', () => {
let actions: Observable<any>;
let effects: InquiryWizardEffects;
let inquiryService: MockInquiryService;
let _snackBar: MatSnackBar;

beforeEach(() => {
    TestBed.configureTestingModule({
        imports: [
            NxModule.forRoot(),
            StoreModule.forRoot({}),
            EffectsModule.forRoot([]),
            MatSnackBarModule,
        ],
        providers: [
            InquiryWizardEffects,
            DataPersistence,
            provideMockActions(() => actions),
            { provide: InquiriesService, useClass: MockInquiryService },
            { provide: MatSnackBar}
        ]
    });
    _snackBar= TestBed.get(MatSnackBar);
    effects = TestBed.get(InquiryWizardEffects);
    inquiryService = TestBed.get(InquiriesService);
});

Что я делаю не так?

Редактировать

Это ошибка, которую я получил:

'Невозможно прочитать свойство' openFromComponent 'из неопределенного'

это происходит, когда я делаю:

this._snackBar.openFromComponent(CreatedEntitySnackBarComponent, {
            duration:  environment.longDurationSnackBar,
            panelClass: [style],
            horizontalPosition: 'right',
            data: {
                title: title,
                entityId: entityId
            }
        });
    }

1 Ответ

1 голос
/ 29 октября 2019

Вы можете использовать "useValue", чтобы предоставить SnackBar и подделать его.

describe('InquiryWizardEffects', () => {
let actions: Observable<any>;
let effects: InquiryWizardEffects;
let inquiryService: MockInquiryService;
beforeEach(() => {
    TestBed.configureTestingModule({
        imports: [
            NxModule.forRoot(),
            StoreModule.forRoot({}),
            EffectsModule.forRoot([]),
            MatSnackBarModule,
        ],
        providers: [
            InquiryWizardEffects,
            DataPersistence,
            provideMockActions(() => actions),
            { provide: InquiriesService, useClass: MockInquiryService },
            { provide: MatSnackBar, useVale: {openFromComponent: (param1, param2) => { return; }}},
        ]
    });
    effects = TestBed.get(InquiryWizardEffects);
    inquiryService = TestBed.get(InquiriesService);
});

Попробуйте, если это работает.

...