【问题标题】:Ionic 3x: unit testing, mock for default controllersIonic 3x:单元测试,模拟默认控制器
【发布时间】:2017-05-25 08:43:29
【问题描述】:

我正在编写一个 Ionic 应用程序并对内部代码进行测试。我有一个example,它很有帮助。但是我正在使用 Geolocation 或 Loading Controller 等其他东西作为我的功能,我不知道应该如何模拟它们。例如我在.spec.ts 中提供

{ provide: LoadingController, useClass: LoadMock }

但我不知道我应该提供什么(哪种类型和数据)。错误日志尤其没有意义。例如,我应该在这里为加载控制器提供什么。它有方法:创建、呈现和关闭。

export class LoadMock {

    public create(): type??? {
        return what???
    }

    public present(): type??? {
        return what???
    }

    public dismiss(): type??? {
        return what???
    }
}

【问题讨论】:

  • what 取决于它在测试单元中的如何。答案和问题一样好。
  • @estus 我在哪里可以看到我应该通过和返回什么?
  • 您在哪里使用 LoadingController。
  • 我正在使用这个:github.com/stonelasley/ionic-mocks

标签: angular unit-testing typescript ionic-framework ionic3


【解决方案1】:

这完全取决于您如何在代码中使用这些组件。例如,如果你有这样的东西

let loading = this.loadingCtrl.create({
  content: 'Please wait...'
});

loading.present();

this.getData().then(data => {
  // Do something
  loading.dismiss();
});

present()dismiss() 不需要返回任何内容,因为返回值被忽略。 create() 应该返回带有函数 present()dismiss() 的东西。

所以模拟的LoadingController 可能看起来像这样

export class LoadingMock {

  public create(): any {
    return new LoadingMock;
  }

  public dismiss(): any {}

  public present(): any {}
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-27
    • 1970-01-01
    • 2015-03-15
    • 2014-07-30
    • 2012-08-01
    • 1970-01-01
    • 2014-01-16
    相关资源
    最近更新 更多