【发布时间】:2020-03-28 01:57:20
【问题描述】:
我正在尝试模拟服务中的依赖项。我不知道出了什么问题.. 它并不是一个很好的测试类,但它都是关于代码覆盖率的——这里是服务
@Injectable()
export class SessionService {
constructor(private sessionStore: UserStore){}
login(userData: User) {
this.sessionStore.login(userData);
}
logout(){
this.sessionStore.logout();
}
}
依赖的 UserStore 看起来像这样:
export function createInitialState(): User {
return {
id: 0, password: "", role: undefined, username: "",
}
}
@Injectable()
@StoreConfig({ name: 'session', resettable: true })
export class UserStore extends Store<User> {
constructor() {
super(createInitialState());
}
login(user: User){
this.update(user);
}
logout(){
this.reset();
this.update(createInitialState());
}
getCurrentUser(){
return this.getValue();
}
}
单元测试:
describe('SessionService', () => {
// @ts-ignore
let sessionService: SessionService;
let userStoreMock;
beforeEach(() => {
userStoreMock = {
login: jest.fn(),
logout: jest.fn()
};
TestBed.configureTestingModule({
providers:[{ provide: UserStore, useValue: userStoreMock}]
});
sessionService = TestBed.get(SessionService);
});
it('should be defined', () => {
expect(sessionService).toBeDefined();
})
});
我得到的错误是:
TypeError: Cannot read property 'getComponentFromError' of null
【问题讨论】:
-
您没有向 TestBed 提供 SessionService 吗?但试图从 TestBed sessionService = TestBed.get(SessionService);
-
@Ininiv 我在传递它时仍然遇到同样的错误
标签: angular typescript jestjs