Unit testing 在AngularWeb应用程序中,什么需要进行单元测试?

Unit testing 在AngularWeb应用程序中,什么需要进行单元测试?,unit-testing,angularjs,service,Unit Testing,Angularjs,Service,对于编写angular代码的前端开发人员,我应该在javascript前端项目的哪一部分进行单元测试?我发现不需要测试很多代码,我最大的障碍是angular服务的哪一部分需要测试?如果$httpBackend是一个模拟调用,那么调用它有什么意义呢?随着项目复杂性的增加,您可能会发现angular应用程序做了很多工作。Angular的设计允许客户端承担大量处理和呈现来自服务器的数据的责任 是的,我同意,你不应该测试任何东西,除了你自己的代码。因此,为$http编写测试是无用的。但是,如果您希望服务

对于编写angular代码的前端开发人员,我应该在javascript前端项目的哪一部分进行单元测试?我发现不需要测试很多代码,我最大的障碍是angular服务的哪一部分需要测试?如果$httpBackend是一个模拟调用,那么调用它有什么意义呢?

随着项目复杂性的增加,您可能会发现angular应用程序做了很多工作。Angular的设计允许客户端承担大量处理和呈现来自服务器的数据的责任

是的,我同意,你不应该测试任何东西,除了你自己的代码。因此,为
$http
编写测试是无用的。但是,如果您希望服务器返回一个特定的JSON契约,并且希望确保您将其正确映射到angular应用程序中使用的结构,那么这是值得测试的。此外,如果您在服务或控制器中进行计算,则该逻辑值得测试


Angular本身被设置为支持TDD,因为它在视图、控制器和服务之间有很好的分离(甚至可以编译和测试指令)。您编写的所有javascript代码都是测试覆盖率的理想候选代码。所以,IMHO,您应该对指令、控制器和服务进行单元测试。您可以得到您想要的详细信息,以确保您的代码是可靠的

感谢你澄清了这一点,所以几乎在我编写代码的任何时候,我都可以对所有未确定的内容使用模拟,测试将确保逻辑流是正确的。因此,填空将产生相同的结果。现在还有两个问题,如果你能回答的话,我有非常复杂的指令,我的意思是非常复杂的指令,最好的方法是将逻辑分成单独的函数进行测试,还是我应该对指令中的每个函数进行测试?第二,我经常发现我的测试比代码本身长3倍,这正常吗?对于问题1,我有一个通用的验证指令,它几乎验证了长度/模式/值/和这三个方面的许多其他方面,使我的生命书写表单验证更容易,它们执行复杂的验证,例如,当您尝试输入卡号时,将信用卡表单的卡类型msg改为“请先选择一种卡类型”,等等。在这种情况下,编写单元测试的最佳方法是什么?这两个问题可能是新的帖子。我不确定我能否完全回答这些问题,但我相信其他人也能回答。对于q1:通常,我一次只关注一个函数的一个方面。因此,您将有许多测试来三角化函数并执行其所有流。但一般来说,试着一次只测试一件事。对于q2:这实际上取决于您正在测试的内容。但是,我想说,通常测试要长一点,因为它们需要设置和断言。至于表单验证,我也不确定。仍然在寻找验证的方法。也许是e2e测试?这取决于验证在多大程度上依赖于DOM。