2016-07-20 57 views
2

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

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

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

回答

1

这个问题正在讨论here,可能那些静态方法的类将被替换为注入式服务。

0

我做了什么,不知道是否是一种好方法,是使用Ionic Native对象的实例设置组件的属性,并在测试时用模拟覆盖此属性。与AppVersion例如:

component.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) 
    }); 
    } 
}