我正在使用angularjs(1.x)作为框架进行项目。在这个项目中,我有一个Web界面,我提出了一些后端请求。我觉得有必要为这个工具编写测试。所以,我开始为此编写单元测试用例。但是现在,我无法为某些功能编写测试用例。我的问题是:
我正在尝试编写正在发出后端请求的函数的测试用例,在success
或error
上,我正在调用其他函数。所以,基本上,这个函数没有返回任何东西。那么,我如何测试这个功能呢?
代码段是:
public makePutRequest(): void {
this.backendService.putBackendRequest(url, backendData, config)
.then((success) => {
successFunction(success); // function call on success
}, (error) => {
errorFunction(error); // function call on error
})
}
backendService中的函数是:
public putBackendRequest(url, backendData, config){
let defered = this.$q.defer();
this.$httpService.put(url, backendData, config)
.success((data, status, headers, config): void => {
if (status === 200) {
// do some further manipulation with data.
}
return defered.resolve(data);
})
.error((data, status, headers, config): void => {
if (status === 500) {
// do some other manipulation.
}
return defered.reject(data);
});
return defered.promise;
}
我正在编写单元测试测试用例,使用karma作为测试运行器,jasmine作为测试框架,使用angularjs(1.x)作为框架。
现在,我无法弄清楚如何为函数makePutRequest
编写测试用例,因为它正在获取promise
,而在承诺的resolve
上它正在调用一个函数,在reject
它正在调用其他函数。
我是新手在angularjs中编写单元测试。任何有用的建议都会非常有用!
由于
答案 0 :(得分:0)
您想为backendService构建测试双精度。测试双重将根据您的要求拒绝或解决。您没有提到您正在使用的单元测试框架,但您可以手动构建测试双精度,或者使用单元测试中的模拟框架来制作测试双重模板,以您想要的方式响应。一些测试库,如Jasmine,可以创建内置的测试双精度。
以下是针对相同类型的服务(调用后端的服务)手动构建的测试双精度的示例。您需要某种机制将测试double注入调用服务的测试代码中。在下面的示例中,我使用构造函数依赖注入。
正在测试的课程是“App”。 App调用的依赖项/服务称为“Api”。在下面的示例中,我测试的是,在App成功接收服务返回的已解析承诺中的数据后,它会在App上正确更新状态。
bottom-right