这是我的情况:
我有一个包含很多组件的视图。根据用户与这些组件的交互,为视图提供了一个控制器(通过ui-router状态配置),视图的控制器会生成一些数据,然后将其发送到服务器。
我想在测试中做的是通过使用class Bridge @Inject constructor(): HasSupportFragmentInjector
模仿用户的活动,然后使用element.triggerHandler('click')
来确保准备了正确的有效负载。
我可以使用单个指令或组件执行类似的操作,但是可以使用自定义模板和控制器吗?
这是我的尝试:
$httpBackend
然后,我正在尝试类似的操作(有点混乱,但是该操作在另一项测试中适用于组件)
const template = $templateCache.get('view-template.html');
let scope = $rootScope.$new();
let element = angular.element(template);
$compile(element)(scope);
let controller = $controller('ViewController', {
'$scope': scope,
'$element': element
});
scope.$digest();
在angular.element($(element).find('#myButton')).triggerHandler('click');
scope.$digest();
中,我有:
view-template.html
<button ng-click="vm.test()" id="myButton">Click me</button>
来自声明状态时最初使用的vm
。当运行以上代码时,不会执行控制器中的controllerAs
。可以运作吗?
我知道它不仅仅是单元测试,但是由于我不需要服务器,因此我认为使用业力是个好主意。