作为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
})
});