Jasmine testcase : How to resolve locale.ready()



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

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

我无法嘲笑"区域设置"。虽然它应该像其他服务一样简单明了。 我为此目的在互联网上找到了一些东西,但文档没有工作代码:

'

karma-json-preprocessor'

我能否获得演示如何在此方案中模拟区域设置的示例代码?

编辑:(29May'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);
});

问题是当我运行此测试时,它说未定义报告名称。似乎它无法解析区域设置服务。

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

用茉莉花测试承诺 - 提供和间谍

最新更新