无法让MockBackend返回错误响应

Ben*_*ard 3 javascript unit-testing mocking angular

当我尝试使用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")
  })));
}
Run Code Online (Sandbox Code Playgroud)

我在下面的插件中重现了这个问题:http://plnkr.co/edit/Rsl8Zcj6iEAIoD8KDDly

当我使用实际后端运行代码时,它按预期工作.当我编写测试时,我的问题仅仅是模拟错误响应.

Pat*_*sen 7

MockConnection中对象有一个mockError(err?: Error)功能,你应该调用,而不是mockRespond.