【问题标题】:How to mock formControl value getTime() in unit tests如何在单元测试中模拟 formControl 值 getTime()
【发布时间】:2019-10-09 13:50:10
【问题描述】:

我正在尝试对 formControl 的 getTime() 进行单元测试。我收到一个错误

.getTime 不是函数。

组件文件的 sn-p 如下所示:

import {FormControl} from @angular/forms;
@component({ 
  selector: 'lorem-ipsum',
  templateUrl: './lorem-ipsum.html'
})

export class LoremIpsumComponent implements OnInIt {
  .....
  ...
  ..
  .
  magazineSubscriptionFrom = new FormControl({value: '', disabled: true});
  magazineSubscriptionTo = new FormControl({value: '', disabled: true});

  constructor (
    ....
  ) {}

  ngOnInit() {}

  verifySubscription() {
    let test1 = this.magazineSubscriptionFrom.value.getTime();
    ...
    ..
    .
  }

【问题讨论】:

  • 你能不能也发布你的测试代码
  • @HDJEMAI ...格式化的tq....下次我会做得更好
  • 也许你可以尝试使用spyOnProperty
  • spyOnProperty(component.magazineSubscriptionFrom, 'value', 'get').and.returnValue(your date value here) ?
  • 如下: It('should verifySubscription , () => { Component.magazineSubscription.setValue(''); fixture.DetectChanges(); Component.verifySubscription(); Expect(somevalue in verifySubscription fn).toBeTruthy; }

标签: angular unit-testing karma-jasmine angular-test


【解决方案1】:

您的错误原因是magazineSubscriptionFrom 的初始值是'',因为您正在使用以下行在constructor 中设置它:

magazineSubscriptionFrom = new FormControl({value: '', disabled: true});

当您尝试在其上调用getTime() 时,它会给您错误,因为getTime()Date 的函数。因此,您需要在表单控件中添加一个 Date 值。您还需要将表单控件的字符串值转换为 Date 以便 getTime() 工作

你需要换行:

let test1 = this.magazineSubscriptionFrom.value.getTime();

let test1 = new Date(this.magazineSubscriptionFrom.value).getTime();

现在在您的测试中,您需要使用setValue 设置有效日期

It is as below : It(‘should verifySubscription , () => { 
  Component.magazineSubscription.setValue(new Date()); <- set valid date here

  fixture.DetectChanges(); 

  Component.verifySubscription();
  Expect(somevalue in verifySubscription fn).toBeTruthy;
}

也将其更改为magazineSubscriptionTo 控件。

希望对你有帮助:)

【讨论】:

    猜你喜欢
    • 2017-06-14
    • 1970-01-01
    • 2013-10-11
    • 1970-01-01
    • 1970-01-01
    • 2017-01-21
    • 2019-12-13
    • 2012-07-14
    • 2019-09-21
    相关资源
    最近更新 更多