如何模拟Angular DI?

时间:2019-12-26 02:34:19

标签: javascript angular unit-testing dependency-injection mocking

作为Java脚本单元测试的一部分(第一次进行),我将不得不模拟角度DI(我认为初步理解是正确的)。从测试台开始尝试了几种可能性,但是由于我无法确定模拟返回的值的类型,因此没有任何效果。

目标:用于测试诸如dummyNUmberic(),dummytextContains()等功能。 如何为“ Dummyclass”创建对象以便使用dummyNUmberic()函数及更多功能。模拟DI对测试这些功能是否重要? 类:

@Injectable()
export class Dummyclass{
    //removed the public variable

    constructor(private injector: Injector) {
        setTimeout(() => {
            this._dummyService = this.injector.get(DummyService);
        });
    }

    dummyNUmberic(n: any): n is number | string {
        return !isNaN(parseFloat(n)) && isFinite(n);
    }

    dummytextContains(text: string, searchText: string): boolean {
        return text.toLowerCase().indexOf(searchText.toLowerCase()) !== -1;
    }

我的规格文件显示如下

import "zone.js";
import "reflect-metadata";

// tslint:disable:ordered-imports
import 'zone.js/dist/long-stack-trace-zone';
import 'zone.js/dist/proxy.js';
import 'zone.js/dist/sync-test';
import 'zone.js/dist/jasmine-patch';
import 'zone.js/dist/async-test';
import 'zone.js/dist/fake-async-test';

import { BrowserDynamicTestingModule,
    platformBrowserDynamicTesting } from '@angular/platform-browser-dynamic/testing';



import { Injector } from "@angular/core";
import {TestBed, inject, getTestBed} from "@angular/core/testing"
import { DummyService} from "../../app/_services";
//https://angular.io/guide/testing#test-a-component-with-a-dependency


describe('Mocking DI using TestBed', ()=>{
let mockservice: DummyService;

beforeEach(()=>{
    TestBed.resetTestEnvironment();
    TestBed.initTestEnvironment(BrowserDynamicTestingModule,
    platformBrowserDynamicTesting());

    TestBed.configureTestingModule({
        providers:[mockservice]
    });
    mockservice=TestBed.get(DummyService);

});

it('testing service ', ()=>{

//testing functions , should I draft here and how to create object for the class

})
});

0 个答案:

没有答案