如何模拟非ng2模块?

时间:2017-01-19 21:32:16

标签: unit-testing angular

我正在使用ng2项目中的第三方模块。我希望能够模拟这个模块进行测试,但模块本身并没有注入我的服务,只需要它。

如何覆盖此Client以便我的测试不使用实际模块?

import {Injectable} from '@angular/core';

var Client = require('ssh2').Client;

@Injectable()
export class SshService {

    constructor(){
        //Should log "hello world"
        Client.myFunc();
    }
}



import { TestBed, inject } from '@angular/core/testing';


describe('My Service', () => {

    beforeEach(() => {

        TestBed.configureTestingModule({
            providers: [

                SshService
            ]
        });

    });
    it('should work as expected',
        inject([SshService], (sshService:SshService) => {

            sshService.Client = {
                myFunc:function(){
                    console.log('hello world')
                }
            } 
            console.log(sshService.Client)
        }));

});

1 个答案:

答案 0 :(得分:0)

也许将第三方模块包装在angular2服务中并在SshService中注入该服务。