http服务规范在Angular中实际测试了什么?

时间:2018-12-17 11:54:03

标签: angular unit-testing angular-httpclient

这里有一些理论问题。

我正在遵循官方angular.io documentation来测试正在执行http请求的服务,并且到目前为止,我已经成功实现了我的规范。

我不了解的是我们在这里实际测试的内容,前提是我指定了应该从请求中接收回的模拟数据。

不同地说,我将如何使该测试失败?

HttpClientModule在内部所做的使该测试值得实施的是什么?

别误会我,我是第一个提倡单元测试的人,我只是不明白我们从这种特定类型的规范中获得了什么价值。

非常感谢您的宝贵时间。

干杯。

1 个答案:

答案 0 :(得分:0)

这是为了确保您的服务在调用方法时能够进行HTTP调用,并且您可以使用“ GET / POST / PUT”等来验证所调用的HTTP。

根据文档:

  

Angular的HTTP测试库专为一种测试模式而设计,其中应用程序首先执行代码并发出请求。

     

然后,测试期望某些请求已经发出或尚未发出,   针对这些请求执行断言,最后提供   通过“冲洗”每个预期的请求进行响应。

     

最后,测试可能会验证该应用程序是否未发生意外情况   请求。

因此,如果您的服务具有方法submitData,则该方法会将数据放入Rest Service。然后,在这种情况下,您的测试应验证submitData是否确实执行了该操作。例如:

service.submitData(myRequestObj).subscribe(() => {
        expect(http.put).toHaveBeenCalled();
        expect(http.put).toBeCalledWith('service-url');
    });

话虽如此,如果您想嘲笑,监视和测试服务,或者没有太多价值,则可以忽略不计。