作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我试图测试一个主题的行为,但它不起作用,而且似乎有些事情我没有正确理解。考虑以下测试:
it('marble testing subject test', () => {
const obs$: Subject<number> = new Subject<number>();
obs$.next(42);
obs$.next(24);
expect(obs$.asObservable()).toBeObservable(hot('xy', { x: 42, y: 24 }));
});
Expected $.length = 0 to equal 2.
Expected $[0] = undefined to equal Object({ frame: 0, notification: Notification({ kind: 'N', value: 42, error: undefined, hasValue: true }) }).
Expected $[1] = undefined to equal Object({ frame: 10, notification: Notification({ kind: 'N', value: 24, error: undefined, hasValue: true }) }).
Subject
(根据文档)仅在订阅开始后发出值。
toBeObservable()
函数(我假设)订阅
Subject
所以我的 2
next
调用发生在此之前,因此它们不会发出。
ReplaySubject
来使其正常工作。但如果我这样做,大理石图必须是
(xy)
而不是
xy
.
最佳答案
我在 Angular 应用程序的上下文中进行了这项工作
我的服务,关键部分是我将我的东西定义为 getter,让我有机会实际监视 asObservable
如果我刚刚定义了 things$
作为属性,则 spy 不起作用:
@Injectable({
providedIn: 'root'
})
export class ApiService {
private things = new BehaviorSubject<Array<string>>([]);
public get things$(): Observable<boolean> {
return this.things.asObservable().pipe(map((things) => things.length > 0))
}
}
asObservable
things
上的方法
BehaviourSubject
.像这样:
describe('#things$', () => {
it('should ', () => {
const things. = 'a-b-a';
const expected = 't-f-t';
// spy on
spyOn(service['things'], 'asObservable').and.returnValue(hot(things, {
a: ['a', 'b'],
b: []
}));
expect(service.things$).toBeObservable(cold(expected, {
t: true,
f: false
}));
});
});
关于unit-testing - Marble 用 Jasmine 大理石测试受试者随时间的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55596044/
我正在尝试使用 Mingw 和 Qt 5.5 在 Windows 10 上编译 Marble。 g++ (i686-posix-dwarf-rev1, Built by MinGW-W64 proje
我是一名优秀的程序员,十分优秀!