我已经为一个简单的控制器写了一些单元测试,这个控制器有一个发出http请求的服务,两个单元测试都有效,但我不确定哪个是最合适的,或者我是否想要同时使用它们?
我写的第一个测试更像是java中弹簧控制器的mockito样式测试:
it('should make call via function add() using spyOn()', function() {
spyOn(calculatorServiceMock, 'add').and.returnValue($q.when(5));
$scope.add(3,2);
$httpBackend.flush();
expect(calculatorServiceMock.add).toHaveBeenCalledWith(3, 2);
expect($scope.result).toEqual(5);
});
第二个测试是我想更简单一点,它不验证控制器内部的任何交互,它只是期望进行调用,存根响应并在之后检查控制器上的值:
it('should make call via function add() using http backend expect', function() {
$httpBackend.expect('GET', url + 'calculator/add?val1=1&val2=32').respond({"result": 33});
$scope.add(1, 32);
$httpBackend.flush();
expect($scope.result).toEqual(33);
});
这些方法中的任何一种都优先于其他方法,是否有任何优点可以包括测试控制器功能?