【发布时间】:2016-05-23 17:56:03
【问题描述】:
当我尝试使用 Angular 2 MockBackend 进行单元测试时遇到问题
我对后端成功响应的测试工作正常,但是当我尝试模拟来自后端的错误响应时,它总是在成功案例中。
我将以下内容绑定到两个不同的按钮,其中一个将 true 传递给函数,另一个将 false 传递给函数。无论我按什么按钮,我们总是会进入订阅中的成功块。我错过了什么?
callHttp(success) {
let connection;
mockBackend.connections.subscribe(c => connection = c);
this.http.get("/test")
.subscribe(
res => {
let msg = "Success status ("+res.status+")";
console.log(msg);
this.latestMessage = msg;
}),
err => {
// We never get here...
let msg = "Error status ("+res.status+")";
console.log(msg);
this.latestMessage = msg;
});
connection.mockRespond(new Response(new BaseResponseOptions().merge({
status: success ? 200 : 401,
body: JSON.stringify("Response")
})));
}
我已在以下 plunk 中重现了该问题:http://plnkr.co/edit/Rsl8Zcj6iEAIoD8KDDly
当我使用实际后端运行代码时,它按预期工作。我的问题只是在编写测试时模拟错误响应。
【问题讨论】:
标签: javascript unit-testing mocking angular