【发布时间】:2019-05-24 11:37:00
【问题描述】:
我想测试my user.store.ts 的get 和set 方法。我有一个get() 用于获取users 和addUsers() 用于将用户添加到BehaviourSubject。我怎样才能做到这一点?
import { Injectable } from '@angular/core';
import { BehaviorSubject } from 'rxjs';
import { User } from 'ngx-login-client';
@Injectable({
providedIn: 'root'
})
export class UserStore {
private _users: BehaviorSubject<User[]> = new BehaviorSubject([]);
get users() {
return this._users.asObservable();
}
addUsers(users: User[]) {
this._users.next(users);
}
}
我希望输出是在调用addUsers() 时添加的值,并且当我调用get users() 时可以get 用户。我是Angular 测试的新手。
得到类似的错误:
Expected Observable({ _isScalar: false, source: BehaviorSubject({ _isScalar: false, observers: [ ], closed: false, isStopped: false, hasError: false, thrownError: null, _value: [ Object({ attributes: Object({ fullName: 'name', imageURL: '', username: 'myUser' }), id: 'userId', type: 'userType' }) ] }) }) to equal [ Object({ attributes: Object({ fullName: 'name', imageURL: '', username: 'myUser' }), id: 'userId', type: 'userType' }) ].
我的User[] 的类型是:
{
'attributes': {
'fullName': 'name',
'imageURL': '',
'username': 'myUser'.
},
'id': 'userId',
'type': 'userType'
}
更新:我的 user.store.spec.ts 文件。
import { TestBed, async } from '@angular/core/testing';
import { UserStore } from './user.store';
import { BehaviorSubject } from 'rxjs';
import { User } from 'ngx-login-client';
describe('UsersStore', () => {
beforeEach(() => TestBed.configureTestingModule({}));
it('should be created', () => {
const store: UserStore = TestBed.get(UserStore);
expect(store).toBeTruthy();
});
it('should add Users', async(() => {
let store: UserStore;
store = TestBed.get(UserStore);
let user: User[];
const testUser: User[] = [{
'attributes': {
'fullName': 'name',
'imageURL': '',
'username': 'myUser'
},
'id': 'userId',
'type': 'userType'
}];
store.addUsers(testUser);
store.users.subscribe(users => {
expect(users).toBe(testUser);
});
}));
});`
【问题讨论】:
-
我在这个问题上迟到了 - 你还有兴趣解决这个问题吗? :)
-
不,谢谢 :)。我搞定了
-
你是怎么做到的,请分享解决方案
-
我不记得@Ratheesh,我不记得我是怎么做到的。那时我正在与 UI 团队合作 :)
标签: angular typescript unit-testing angular6 angular7