【发布时间】:2017-06-28 14:28:54
【问题描述】:
我有一个渲染标签和输入的组件
在 $postLink 上,我为输入焦点添加了 Overver,如果触发了焦点事件,我将内部变量 focused 设置为 true
$postLink() {
Rx.Observable.fromEvent(myInputElement, 'focus')
.debounceTime(200)
.subscribe(() => {
this.focused = true;
this.$scope.$evalAsync();
});
}
在我的测试文件(我正在使用 Jasmine)中,我有这样的内容:
it('must set "focused" to true when input get focused', () => {
// The setupTemplate return a angular.element input, my component controller and scope
const { input, controller, parentScope } = setupTemplate();
input[0].dispatchEvent(new Event('focus'));
$timeout.flush(600);
parentScope.$digest();
expect(controller.focused).toBe(true);
});
但是我的测试失败了。
如果我从组件方法中删除debounceTime,则测试通过。
如何模拟debounceTime?
【问题讨论】:
-
测试是异步的,所以你可以使用
it('...', done => {}),然后手动调用done() -
@martin THAAANKS!!!,就是这样 =DD
标签: javascript angularjs testing jasmine rxjs