Jasmine测试用例:如何解析locale.ready()

时间:2017-05-28 20:55:14

标签: angularjs jasmine karma-runner

我正在研究AngularJs 1.5,刚开始使用Jasmine和Karma进行测试... 我的控制器使用

locale.ready('common').then(function () {
})

我无法模仿' locale'。虽然它应该像其他服务一样直截了当。 为此我在互联网上找到了一些东西,但文档中没有可用的代码:

  

'果报JSON-预处理'

我是否可以获得演示如何在此场景中模拟语言环境的示例代码?

编辑:(29月5日和17日) 以下是示例代码: promise返回包含本地化键的对象&值:

angular.module('myApp', [])
    .controller('mytestcontroller', ['$scope', 'locale',
        function ($scope, locale) {
            locale.ready('common').then(function (res) {
                $scope.reportname = 'gauravreport';
            });
        }
    ]);

以下是我正在尝试的示例代码:

var scope, controller;
beforeEach(inject(function($controller, $rootScope, locale) {
        scope = $rootScope.$new();
        controller = $controller('mytestcontroller', {
            '$scope': scope,
            'locale': locale
        });
    }));
it('check report name', function(done) {
        var data = window.$json.$get('app/languages/en-US/home.lang.json');
        locale.ready('myreport')
            .then(function() {
                expect(scope.reportname).toBe("gauravreport");
                done();
            })
            .catch(done.fail);
    });

问题是当我运行此测试时,它表示未定义reportname。它似乎无法解析语言环境服务。

1 个答案:

答案 0 :(得分:0)

我已经使用此处所述的方法解决了这个问题:

Testing Promises with Jasmine - Provide and Spy