小编lew*_*stg的帖子

zone.js和Jasmine的时钟之间的冲突

我正在使用Jasmine测试套件,其中包括"vanilla"Jasmine测试以及一些Angular 2组件的Jasmine测试.由于Angular 2的包含,zone.js被加载.这与Jasmine的时钟产生了冲突.例如,以下测试失败并显示错误,Error: Jasmine Clock was unable to install over custom global timer functions. Is the clock already installed?

describe('an async test with zone.js present', function() {
  beforeEach(function() {
    jasmine.clock().install();
  });

  afterEach(function() {
    jasmine.clock().uninstall();
  });

  it('cannot install jasmine\'s mock clock', function() {
    var callback = jasmine.createSpy('setTimeoutCallback')
    setTimeout(callback, 55);
    jasmine.clock().tick(56);
    expect(callback).toHaveBeenCalled();
  });
})
Run Code Online (Sandbox Code Playgroud)

这里是plunker为上述代码.

如果没有与"香草"测试分开提供Angular 2测试,我想知道可能有哪些选项.例如,是否可以使用区域执行Jasmine时钟的工作?例如,是否可以在声明之前模拟带区域的刻度或刷新所有计划任务?

javascript zone jasmine angular

11
推荐指数
2
解决办法
3323
查看次数

如何使用EmbeddedViewRef的上下文变量

我有点不确定如何使用EmbeddedViewRefcontext变量.根据我从Angular 2的changelog中收集的内容,该context变量将the setLocalgetLocalmethods 替换为在嵌入视图中设置局部变量的机制.

在查看了这个使用的博客文章后,setLocal我将以下最小的例子拼凑在一起:

import { Directive, TemplateRef, ViewContainerRef } from '@angular/core'

export class FooTemplateContext {
  constructor(public bar: string, public baz: string, public qux: string) {}
}

@Directive({
  selector: '[foo]'
})
export class Foo {
  constructor(viewContainerRef: ViewContainerRef, templateRef: TemplateRef<FooTemplateContext>) {
    let context = new FooTemplateContext('bar', 'baz', 'qux');
    let view = viewContainerRef.createEmbeddedView(templateRef, context);
  }
}
Run Code Online (Sandbox Code Playgroud)
import {Component, NgModule} from '@angular/core'
import {BrowserModule} from '@angular/platform-browser'

import { Foo …
Run Code Online (Sandbox Code Playgroud)

angular2-directives angular

4
推荐指数
1
解决办法
3701
查看次数

标签 统计

angular ×2

angular2-directives ×1

jasmine ×1

javascript ×1

zone ×1