对于AngularFireAuth来说,Karma测试失败

时间:2017-10-10 21:03:15

标签: angular karma-jasmine angularfire2

我使用AngularFire2为我的Angular2 Web应用程序创建了使用jasmine / karma的测试用例,我得到了一个奇怪的错误,我无法调试。当我运行我的测试(检查应用程序组件是否存在)时,我收到错误

Failed: app.auth is not a function at new AngularFireAuth (http://localhost:9876/_karma_webpack_/webpack:/C:/path/to/project/node_modules/angularfire2/auth/auth.js:11:1)

查看AngularFire2文件本身看起来它正在尝试将新的身份验证系统分配给它正在创建的当前应用程序,但是这个相同的代码适用于我正在处理的其他Angular2项目。 AngularFire2的版本是4.0.0,Firebase的版本是4.4.0。

2 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,并通过从app.module.ts文件中的“提供商”列表中删除“FirebaseApp”来解决此问题

答案 1 :(得分:0)

我在自动创建效果测试时遇到了同样的问题,并解决了创建存根的问题:

const AngularFireMocks = {
    auth: Observable.of({ uid: 'ABC123' })
};

在我的测试提供者中,输入:

{ provide: AngularFireAuth, useValue: AngularFireMocks },

完整代码(是一种效果测试):

import {TestBed, inject} from '@angular/core/testing';
import {provideMockActions} from '@ngrx/effects/testing';
import {BehaviorSubject, Observable, of} from 'rxjs';

import {AuthEffects} from './auth.effects';
import {RouterModule} from '@angular/router';
import {RouterTestingModule} from '@angular/router/testing';
import {AngularFireAuth} from '@angular/fire/auth';

const AngularFireMocks = {
    auth: of({ uid: 'ABC123' })
};

describe('AuthEffects', () => {
    let actions$: Observable<any>;
    let effects: AuthEffects;

    beforeEach(() => {
        TestBed.configureTestingModule({
            imports: [RouterTestingModule],
            providers: [
                AuthEffects,
                { provide: AngularFireAuth, useValue: AngularFireMocks },
                provideMockActions(() => actions$)
            ]
        });

        effects = TestBed.get(AuthEffects);
    });

    it('should be created', () => {
        expect(effects).toBeTruthy();
    });
});