【问题标题】:Cannot get MockBackend to return an error response无法让 MockBackend 返回错误响应
【发布时间】: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


    【解决方案1】:

    MockConnection 对象有一个 mockError(err?: Error) 函数,您应该调用它而不是 mockRespond。

    【讨论】:

    • 我认为它接受的只是一个堆栈是正确的吗?如何发送状态代码以便我的应用程序错误处理可以解析它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-26
    • 1970-01-01
    • 2021-12-20
    • 1970-01-01
    • 2015-11-08
    • 1970-01-01
    • 2013-12-15
    相关资源
    最近更新 更多