4

我正在尝试测试要使用的自定义对话框组件,aurelia-dialog该组件通过方法获取它的属性绑定activate()。为了测试组件,我正在使用一个<compose>元素设置测试,该元素也使用如下activate()方法:

beforeEach(() => {
  component = StageComponent
    .withResources('path/to/dialogComponent')
    .inView(`<compose view-model="path/to/dialogComponent" model.bind="mockModel">
             </compose>`)
    .boundTo(mockModel);
});

但是,当我来测试绑定属性的视图模型时,我得到一个空值,而实际视图模型曾经是。

describe('#someComponentMethod()', () => {
  it('Should exist', done => {
    // In the past, I succesfully accessed child viewModels for
    // compose through the following property, after a general package update, 
    // this seems not to work anymore
    let viewModel = component.viewModel.currentViewModel

    expect(viewModel.someComponentMethod).toBeDefined(); 
    // ==> Runtime error, since currentViewModel === null

    done();
  });
});

是否有已知或更好的方法来测试没有可绑定属性但依赖模型绑定的自定义元素activate()


此外,为了测试渲染:似乎有一个可能相关的类似问题:Aurelia Testing Composed Custom Element

4

1 回答 1

0

您可以调用 create 函数并传入从aurelia-bootstrapper如下导入的引导程序:

import { bootstrap } from 'aurelia-bootstrapper';

...

component.create(bootstrap);

当我调用 create 时,会构建并填充 viewModel。create 函数是可等待的,因此您可以访问 .then(() => component.viewModel) 中的 viewmodel 属性,也可以像这样使用 async/await:

await component.create(bootstrap);
于 2018-04-25T10:01:33.367 回答