angularjs - 没有模板的测试指令属性

标签 angularjs unit-testing testing jasmine karma-jasmine

我正在尝试对仅限于属性的 Angular 指令运行一些单元测试。现在我只是想确定该指令是否存在。

有谁知道如何测试仅是属性的指令?

这是指令

的基本版本
function ResetCustomer() {
  return {
    restrict: 'A',
    link: (scope, elem) => {

      elem.bind('click', function() {
        //do stuff
      });
    }
  };
}

export default {
  name: 'resetCustomer',
  fn: ResetCustomer
};

... HTML

<a class="brand" reset-customer>
   <img src="path/to/image.jpg"/>
</a>

...和测试

describe('Unit: ResetCustomer', () => {

  let element, scope, compile;

  beforeEach(() => {
    angular.mock.module('app');
    angular.mock.inject(($compile, $rootScope) => {
      scope = $rootScope.$new();
      compile = $compile;
      element = angular.element('<a reset-customer></a>');
      compile(element)(scope);
      scope.$digest();
    });
  });

  it('should exist', () => {
    expect(element).toBeDefined();
  }); 
});

最佳答案

你首先需要在指令上有一个可测试的东西。

例如,在回调中将作用域变量 isClicked 分配给 true/false。

然后您可以在测试中触发 .click 并断言 isClicked 应该为真。

您甚至可以更进一步,在触发点击之前先断言 isClicked 为假。我不记得这个方法叫什么,但 90% 确定它是 .trigger('click') 或 mousedown...

关于angularjs - 没有模板的测试指令属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39370751/

相关文章:

javascript - Angular 过滤器 - 搜索两个串联字段

java - 用于单元测试的 Play Framework 2 Java 模拟插件

python - 在 Django 中,我如何从我网站上的已知 URL 列表开始,对每个 View 递归地测试所有链接(检查 200 OK)

html - chrome 和 safari 的打印宽度不同

angularjs - 将 PIE.htc 与 AngularJS 一起使用的正确方法是什么?

c - 退出测试的测试条件

testing - 如何测试作为 OSGi Bundle 实现的服务契约?

multithreading - 如何测试跨线程队列?

angularjs - ui-router 在路由末尾添加尾部斜杠导致 404

android - Robolectric - BuildActivity(MyActivity.class).create() 抛出 NullPointerException