首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用<compose>测试Aurelia组件

用<compose>测试Aurelia组件
EN

Stack Overflow用户
提问于 2017-01-17 17:03:10
回答 1查看 672关注 0票数 4

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

代码语言:javascript
复制
beforeEach(() => {
  component = StageComponent
    .withResources('path/to/dialogComponent')
    .inView(`<compose view-model="path/to/dialogComponent" model.bind="mockModel">
             </compose>`)
    .boundTo(mockModel);
});

然而,当我测试绑定属性的视图模型时,我得到了一个空值,而实际的视图模型过去是这样的。

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

发布于 2018-04-25 10:01:33

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

代码语言:javascript
复制
import { bootstrap } from 'aurelia-bootstrapper';

...

component.create(bootstrap);

当我调用create时,就会生成并填充viewModel。create函数是可创建的,因此您可以访问.then(() => component.viewModel)中的viewmodel属性,也可以使用异步/等待,如下所示:

代码语言:javascript
复制
await component.create(bootstrap);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41702913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档