当前位置: 首页 > 知识库问答 >
问题:

带ControlValueAccessor测试的Angular 2(4)组件

楚健
2023-03-14

我想测试实现ControlValueAccessor接口的组件是否允许在我的自定义组件中使用[(ngModel)],但问题是通常的输入是正确的,但ngModel-未定义。下面是代码示例:

@Component({
  template: `
    <custom-component
      [usualInput]="usualInput"
      [(ngModel)]="modelValue"
    ></custom-component>`
})

class TestHostComponent {
  usualInput: number = 1;
  modelValue: number = 2;
}

describe('Component test', () => {
  let component: TestHostComponent;
  let fixture: ComponentFixture<TestHostComponent>;
  let de: DebugElement;
  let customComponent: DebugElement;

  beforeEach(async(() => {
    TestBed.configureTestingModule({
      declarations: [
        CustomComponent,
      ],
      schemas: [NO_ERRORS_SCHEMA],
    }).compileComponents();
  }));
});

因此,我希望customComponent中的usualInput Input()值等于1(确实如此),ngModel值等于2,但ngModel=未定义,调试后我知道ControlValueAccessor writeValue方法不会在测试环境中调用(但它对浏览器是正确的)。那我该怎么修好它呢?

共有1个答案

贺雅健
2023-03-14

ControlValueAccessor组件中,您不能访问NGModel,除非您插入了它并采取了一些技巧来避免循环依赖。

ControlValueAccessor具有WriteValue方法,该方法在更新控件时从控件接收值-如果需要,可以将该值存储在组件中,然后测试它。

 类似资料:
  • 问题内容: 如何使用JUnit 4创建测试套件? 我看过的所有文档似乎都不适合我。而且,如果我使用Eclipse向导,它不会为我提供选择已创建的任何测试类的选项。 问题答案:

  • 英文原文:http://emberjs.com/guides/testing/testing-components/ 单元测试方案和计算属性与之前单元测试基础中说明的相同,因为Ember.Component集成自Ember.Object。 设置 在测试组件之前,需要确定测试应用的div已经加到测试的html文件中: 1 2 <!-- as of time writing, ID attribut

  • 视频很卡,播放不了,缓冲区突然很大,推流上不来,都有可能是带宽过低,SRS支持测试客户端到服务器的带宽。 SRS配置 SRS配置一般是单独加一个vhost支持测速。SRS的配置conf/bandwidth.conf。譬如: listen 1935; vhost __defaultVhost__ { } vhost bandcheck.srs.com {

  • 我一直在设置一些合约JUnit 4测试(遵循回答这个问题的建议) - 例如,如果我有一个接口(我已经在示例中包含了泛型,因为我在我的项目中使用它们) - 但是,这是一个大大简化的示例: 我可以创建一个抽象的合同测试,例如: ...并为每个实现扩展此抽象测试类(我使用。我还将一些变量传递给抽象测试类,以测试接口的实现。 然而,实际上,一些接口返回的对象是其他接口的实现,我希望能够使用该接口的抽象契约