[英]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.