首页 新闻 会员 周边

angular 测试问题

0
悬赏园豆:10 [已解决问题] 解决于 2014-10-11 15:32

项目做完后,在开始补angular的测试工作。现在是只能测试js里一些简单的东西。谁有关于这方面的帮助手册或者文档什么的。

问个问题。

 我想测试我列表页面中的操作按钮,我要怎么测试呢? 我这个操作按钮比如就是一个简单的传值跳转页面的功能。有什么好的解决办法?

战马的主页 战马 | 初学一级 | 园豆:27
提问于:2014-10-10 17:23
< >
分享
最佳答案
0

一般是测试逻辑,不是测试UI的。按照你的说法,你是要测试UI操作了。

收获园豆:10
幻天芒 | 高人七级 |园豆:37175 | 2014-10-11 08:51
 $scope.print = function (printid) {
            return $http.post('/Services/FinanceWebForm.aspx/GetExpensePrint', { id: printid }).success(function (data) {
                $('#divPrt').html('');
                $scope.ExpensePrint = data.d;
                var I_PayTypeModel = [1, 2, 4];//类型的参照
                $scope.ExpensePrint[0].C_PayType = GetPayType(GetValue(I_PayTypeModel, $scope.ExpensePrint[0].C_PayType));
                if ($('#divPrt table').text() == "") {
                    $scope.print(printid);
                }
                else {
                    $scope.printExpense();
                }
            }).error(function () {

            });
        }

那比如我要测试这个方法呢?

 it("Print测试", function () {
        $httpBackend.expectPOST('/Services/GetExpensePrint.ashx').respond("");
        $scope.print();
        expect($scope.ExpensePrint).toBe("");
    });

我这样写不起效果。我把$scope.print()换成$httpBackend.flush();的话。执行的是页面加载的方法。并不是print方法。

战马 | 园豆:27 (初学一级) | 2014-10-11 09:38

@战马: 测试这个方法,不需要再expectPOST了吧。去掉这句。

还有/Services/FinanceWebForm.aspx/GetExpensePrint这个请求,你需要先在before那个方法中模拟一个结果。

幻天芒 | 园豆:37175 (高人七级) | 2014-10-11 12:18

@幻天芒: 

it("Print测试", function () {
        $scope.print();//测试print方法
        $httpBackend.expectPOST('/Services/BindFunction.ashx').respond("");
        $httpBackend.expectPOST('/Services/FinanceWebForm.aspx/ListExpense').respond(data);
        data.d = "";
        $httpBackend.expectPOST('/Services/FinanceWebForm.aspx/GetExpensePrint').respond(data);
        $httpBackend.flush();
        expect($scope.ExpensePrint).toBe("");
    });

要这样测试~~~  

战马 | 园豆:27 (初学一级) | 2014-10-11 14:50

@战马: 好吧,写的测试代码比本身代码还多...

幻天芒 | 园豆:37175 (高人七级) | 2014-10-11 15:30
其他回答(1)
0
it("Print测试", function () {
        $scope.print();//测试print方法
        $httpBackend.expectPOST('/Services/BindFunction.ashx').respond("");
        $httpBackend.expectPOST('/Services/FinanceWebForm.aspx/ListExpense').respond(data);
        data.d = "";
        $httpBackend.expectPOST('/Services/FinanceWebForm.aspx/GetExpensePrint').respond(data);
        $httpBackend.flush();
        expect($scope.ExpensePrint).toBe("");
    });
战马 | 园豆:27 (初学一级) | 2014-10-11 15:31
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册