【发布时间】:2017-11-29 15:32:45
【问题描述】:
希望你能帮上忙。我在整个互联网上搜索我的问题的答案。我是使用 Angular 2 编程的新手,我找到的所有答案对我来说都是神秘的。
这就是我的问题。我将使用 karma 测试 Angular 2 中的服务。并在服务中使用 DarkskyApi:
//imports
import DarkSkyApi from 'dark-sky-api';
@Injectable()
export class WetterService {
/***
* Konstruktor
*/
constructor() {
this.skyApi = this.InitDarkSky();
}
/**
* Die Verbindung zur API Darksky initalialisiern
*/
private InitDarkSky(): IDarkSkyApi {
const darksky: IDarkSkyApi = new DarkSkyApi(this.ApiKey);
// Ansteuern der Api
return darksky
.units('si')
.language('de');
}
}
这是对服务的测试:
import { TestBed, inject } from '@angular/core/testing';
import { WetterService } from './wetter.service';
import {HttpClientModule} from '@angular/common/http';
import DarkSkyApi from 'dark-sky-api';
describe('WetterService', () => {
let darkSkyApi: DarkSkyApi;
beforeEach(() => {
darkSkyApi = new DarkSkyApi();
TestBed.configureTestingModule({
providers: [
WetterService
],
imports: [HttpClientModule]
});
});
it('should be created', inject([WetterService], (service: WetterService) => {
expect(service).toBeTruthy();
}));
});
当我运行测试时,我会出现以下错误:
TypeError: dark_sky_api_1.default 不是构造函数
希望对你有所帮助。
谢谢, 史蒂芬
【问题讨论】:
-
我对项目的 git:github.com/kaemmi84/kiwiGridWetter
-
你确定你正确调用了 DarkSkyApi 构造函数。
-
darkSkyApi = new DarkSkyApi();在你的测试中应该做什么?您实际上并未使用该实例,并且它与您在生产代码中创建它的方式不匹配。错误来自哪里? -
嘿,抱歉,我没有看到您的答案。是的,错误来自初始化。我已经更改了代码。这是我的modul,这是service,这是test of the service。在测试中,我变成了错误“无法解析 WetterService 的所有参数:(?)”
标签: angular unit-testing typescript karma-jasmine angular2-services