繁体   English   中英

用于测试的模拟 ionic-native

[英]Mock ionic-native for testing

我正在编写一个想要测试的 ionic 2 应用程序。 因此,我需要能够模拟 ionic 本机插件,即我想测试应用程序如何对网络变化做出反应。 我尝试导入模块并覆盖其属性:

import {Network, Connection} from 'ionic-native';
Network.connection = Connection.WIFI;

但这不起作用( 'Cannot set property connection of function Network() { } which has only a getter' )。 有没有可能嘲笑这个?

这里正在讨论这个问题,可能那些带有静态方法的类将被可注入的服务所取代。

我所做的,并且不知道这是否是一个好方法,是使用 Ionic Native 对象的实例设置组件的属性,并且在我测试时,使用模拟覆盖此属性。 AppVersion 示例:

组件.ts

import { AppVersion } from 'ionic-native';
export class YourComponent {
  public appVersion: any = AppVersion;
  //etc
}

在 component.spec.ts

import { AppVersionMock } from '../../mocks';
describe('YourComponent', () => {
  //creates fixtures, get instance, etc...

  //in some assertion
  it('should have new version number', fakeAsync(() => {
    fixture.componentInstance.appVersion = new AppVersionMock()
  })
})

和 mocks.ts 有类似的东西

export class AppVersionMock {
  version = 20;
  public getVersionNumber() {
    return new Promise( (resolve, reject) => {
      resolve(this.version)
    });
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM