Angularjs   发布时间:2022-04-20  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了单元测试 – 单元测试AngularJS服务大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图找出如何测试我的AngularJS服务,它依赖于$http.

当使用$httpBACkend来模拟AJAX post(whenPOST)时,你发布的对象是否决定响应?

这是我的服务和我的测试例如:

(function () {
    "use Strict"

    var app = angular.module('cs');

    app.service('Platecheckservice',['$http',function ($http) {
        return {
            checkPlate: function (platenumber) {
                return $http.post('Platecheck/Index',{
                    platenumber: platenumber
                }).then(function (responsE) {
                    return {
                        message: response.data.VehicleAtl === null ? 'Clean' : 'Hot',alertClass: response.data.VehicleAtl === null ? 'alert-success' : 'alert-danger'
                    }
                });
            }
        }
    }]);

}());

测试

/// <reference path="../libs/angular-1.0.8/angular.js" />
/// <reference path="../libs/angular-1.0.8/angular-mocks.js" />
/// <reference path="../libs/jasmine-1.3.0/jasmine.js" />
/// <reference path="../app.js" />
/// <reference path="../services/plate-check-service.js" />

describe('Plate check service',function () {
    var httpBACkend,service;

    beforeEach(function () {
        module('cs');

        inject(function ($httpBACkend,PlatecheckservicE) {
            httpBACkend = $httpBACkend;
            httpBACkend.whenPOST('Platecheck/Index',{ platenumber: '123456' }).respond({
                response: {
                    message: 'Clean',alertClass: 'alert-success'
                }
            });
            httpBACkend.whenPOST('Platecheck/Index',{ platenumber: '123456789' }).respond({
                response: {
                    message: 'Hot',alertClass: 'alert-danger'
                }
            });

            service = Platecheckservice;
        });
    });

    it('Should return a clean plate.',function () {
        var result;

        service.checkPlate('123456').then(function (responsE) {
            result = response;
        });

        httpBACkend.flush();
        expect(result.messagE).toBe('Clean');
        expect(result.alertClass).toBe('alert-success');
    });
});

检测结果

Test 'Plate check service:Should return a clean plate.' Failed
    Expected 'Hot' to be 'Clean'.
    Expected 'alert-danger' to be 'alert-success'.
in D:\Code\Scripts\angular\specs\plate-check-service-specs.js (line 35)

0 passed,1 Failed,1 @R_135_10586@l (chutzpah).

========== @R_135_10586@l Tests: 0 passed,1 @R_135_10586@l ==========

看起来它没有虑到我正在传递给服务器的服务器的platenumber.

本来会期待这个测试通过.

这有任何意义吗?

你正在使用一个而不是期望. $httpBACkend可以以两种不同的模式运行.从 the docs

如果您将设置更改为使用expectPOST,则模拟程序将虑请求.

希望这可以帮助.

大佬总结

以上是大佬教程为你收集整理的单元测试 – 单元测试AngularJS服务全部内容,希望文章能够帮你解决单元测试 – 单元测试AngularJS服务所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。