【发布时间】:2017-05-15 18:36:42
【问题描述】:
我正在开发一个使用 angularjs(1.x) 作为框架的项目。在这个项目中,我有一个 Web 界面,我提出了一些后端请求。我觉得有必要为此工具编写测试。所以,我开始为此编写单元测试用例。但是现在,我无法弄清楚为某些功能编写测试用例。我的问题是:
我正在尝试编写发出后端请求的函数的测试用例,并且在 success 或 error 上,我正在调用其他函数。所以,基本上,这个函数没有返回任何东西。那么,我该如何测试这个功能呢?
代码sn-p是:
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 编写单元测试的新手。任何有用的建议都会很有帮助!
谢谢
【问题讨论】:
-
你有没有尝试模拟你的 makePutRequest 调用
-
@ukn:我正在为 makePutRequest 函数编写测试用例。我为什么要模拟那个函数?
-
我的错,我想模拟 putBackendRequest 但我写了 makePutRequest。
-
@ukn:你能详细说明一下,模拟 putBackendRequest 函数对我有什么帮助吗?
-
您将能够测试重要的内容。在这里,您想测试获得成功或错误时会发生什么。其他地方发生什么并不重要。由于你的函数没有返回任何东西,你应该测试一下副作用是什么。
标签: javascript angularjs unit-testing jasmine karma-jasmine