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

具有get设置的单元测试angular @Input()

凤扬
2023-03-14

我正在使用类似的@Input to Angular2@Input to带有get/set的属性。不过,我在弄清楚如何设置单元测试时遇到了一些麻烦。这是我的组件

get order(): any {
    return this._order;
}

@Input()
set order(value: any) {

    this._order = value;
}

 TestBed.configureTestingModule({
            declarations: [
                OrderDetailsComponent,
                OrdersGridComponent,
                KeyValuePipe
            ],
            schemas: [
                CUSTOM_ELEMENTS_SCHEMA
            ],
            providers: [
            ],
            imports: [
                // AppModule
            ]
        }).compileComponents();

在我定义组件的每个位置之前都有一个附加的

beforeEach(() => {
    fixture = TestBed.createComponent(OrderDetailsComponent);
    component = fixture.componentInstance;
    fixture.detectChanges();  
});

在我运行这个简单的测试之前

 it("should set this.enable button to false", () => {
    component.signOrderFromOrderDetails();
    expect(component.signButtonEnable).toBe(false);
});

我收到错误

TypeError: undefined is not an object (evaluating 'this._order.hasOwnProperty') in karma-test-shim.js (line 106886)

我最初的想法是创建一个模拟顺序常量,并在每个这样的常量之前,将它赋给我的组件...

  const order = {
    orderSections: [],
    patient: {}
  };
 component.order = order;

但是,我不被允许做这个任务

TypeError: Attempted to assign to readonly property. in karma-test-shim.js (line 94033)

我的下一个假设是,我必须模拟父组件OrdersGridComponent,因为OrdersDetails是子组件。但是如果是这样的话,我不知道如何在我的单元测试中设置它。任何反馈都将不胜感激。

共有1个答案

潘修为
2023-03-14

我很确定魔术是与异步()

组成部分:

@Input()
set myVar(data: number) {
   this._myVar = data;
}

测试:

it('myVar input should set _myVar', async(() => {
  component.myVar = 42;
  expect(component._myVar).toBe(42);
}));
 类似资料:
  • 问题内容: 我在尝试为Angular-Bootstrap编写茉莉花单元测试时遇到问题 。确切的错误是 `Expected spy open to have been called with [ { templateUrl : ‘/n/views/consent.html’, controller : ‘W2ConsentModal as w2modal’, resolve : { employee

  • 运行单元测试时的例外情况是: 还有一个问题是,这是为了测试SampleRouter,还是只是单元测试process类和任何其他支持类?还是使用以下内容来更改它,以便将消息传递到假的直接队列?

  • 我刚刚将我的项目从angular-cli beta.10升级到angular-cli@WebPack(beta.18),现在我的specs.ts都没有解析(找不到名称'description'等)。有关于如何为我的项目配置单元测试的信息吗?

  • 我正在尝试对使用的Kotlin coroutine进行单元测试。对于单元测试,我不关心,它只是放慢测试的速度。我希望以某种方式运行测试,在调用时不会实际延迟。

  • 问题内容: 我目前有一些单元测试,它们共享一组通用的测试。这是一个例子: 上面的输出是: 有没有办法重写上面的内容,这样就不会调用第一个? 编辑: 而不是运行上面的5个测试,我希望它仅运行4个测试,其中2个来自SubTest1,另外2个来自SubTest2。似乎Python unittest自己在运行原始的BaseTest,我需要一种机制来防止这种情况的发生。 问题答案: 使用多重继承,因此具有通

  • 对于php开发者来说,做单元测试并不是很方便,这也是大部分phper不愿意写单元测试的原因。但是单元测试对提高程序的质量来说,有实在是太重要的了。 有关这一点,我也是在学习java,体验过单元测试的魅力之后才切身体会到的。 那么现在我们就以herosphp为栗子,一起来看看php的单元测试环境如何配置。 首先,毫无疑问,php的单元测试肯定是要依赖phpunit这个工具了。那么我们要先 安装php