为什么这个angularjs测试工作在1.5.x而不是1.6.x?

时间:2018-01-23 05:08:28

标签: angularjs jasmine phantomjs karma-runner

以下代码在AngularJS 1.4和1.5中的最近两年没有问题。但是,我们最近更改为angularjs 1.6并且测试失败。在我尝试的所有angularjs版本中,编译的元素似乎是正确的。 (<h2 class="ng-binding">Bill</h2><p class="ng-binding">Age: 29</p>)似乎失败的是find()的结果。在1.5中,elem.find('h2').html()返回预期的字符串。在1.6中,elem.find('h2').html()返回undefined。我查看了更改日志,但没有任何帮助我解决问题。我错过了什么?

describe('wppicd-child Directive', function() {
    var elem, scope;

    beforeEach(function() {
        angular.mock.module(ngModuleName);
        angular.mock.inject(function($rootScope, $compile) {
            var elemT = ('<wppicd-child ' +
        'child="child">' +
        '</wppicd-child>');
            scope = $rootScope.$new();
            scope.child = {
                name: 'Bill',
                birthday: new Date('April 8, 1988')
            };
            elem = $compile(elemT)(scope);
            scope.$digest();
        });
    });

    it('should have correct title', function() {
        expect(elem.find('h2').html()).toContain('Bill');
    });
});

1 个答案:

答案 0 :(得分:0)

虽然我不知道确切的问题,但解决方案是将PhantomJS从1.x升级到2.x.我们之前没有这样做过,因为CI服务器上的库冲突已经解决了。升级到2.x后,构建再次起作用。