我正在尝试测试一个 javascript 文件,其中包含一个控制器和一些与之交互的 HTML DOM 元素。
被测试的类是:
function BaseConceptMenu(options) {
var baseConceptMenu = new BaseMenu(options);
//Public function -->Method under Test
function showCodeConceptToolbar() {
var scope = angular.element('#toolbar').scope();
scope.$apply(function() {
scope.toolbarController.show(baseConceptMenu.someObject);
});
}
我试图模拟控制器并动态创建 HTML DOM 元素“工具栏”,而不是为了测试而尝试创建外部 HTML 模板。
我正在尝试在每个之前创建 div“工具栏”并模拟“CodeConceptToolbarController”控制器
beforeEach(inject(function ($rootScope, $compile) {
elm = document.createElement('div');
elm.id = 'toolbar';
scope = $rootScope.$new();
createController = function() {
return $controller('CodeConceptToolbarController', {
$scope: scope
});
};
$compile(elm)(scope);
scope.$digest();
}));
但是,当我尝试如下测试时
it('Test Code ConeptToolbarContoller', function() {
// var toolbar = angular.element('#toolbar');
document.getElementById("toolbar").scope().toolbarController = createController();
//As of now,not doing any-idepth testing
//Just a base test call
var menu = new BaseConceptMenu({});
expect(menu.show()).toBe(true);
});
我收到这个错误
TypeError: Cannot read property 'scope' of null
任何人都可以提供一种方法来测试这个吗?还是有更好的方法来测试这个?目前我正在使用 Maven-jasmine 插件