【问题标题】:Read a HTML file in a Karma+Jasmine test在 Karma+Jasmine 测试中读取 HTML 文件
【发布时间】:2015-02-09 13:11:52
【问题描述】:

我有一个 Angular 控制器,它定义了一个包含 50 多个字段名称的数组。这些中的每一个都应该出现在 HTML 文件中,因为输入的 id 和 ng-model 都存在。我想通过阅读和解析 HTML 文件来测试我是否没有输入错误。由于我需要获取阵列,因此 Karma+Jasmine 测试似乎很理想(使用量角器我无法获得)。什么是测试这个的好方法?

对于FileReader$http.get 都没有输入成功或错误函数,而XMLHttpRequest 我只是得到一个空字符串。

我已经加了一行

pattern: 'app/views/*.html', watched: false, included: false, served: true}

转至 karma.conf.js,与我要读取的文件相匹配。

非常感谢任何帮助。

【问题讨论】:

    标签: javascript angularjs karma-jasmine


    【解决方案1】:

    1.您可以使用以下预处理器来渲染html

    • npm install karma-ng-html2js-preprocessor --save-dev

    在 karma.config.js 中添加以下内容:

    ngHtml2JsPreprocessor : {
          moduleName:'templates'
    },
    

    2.使用 Angular 的 $compile 服务,创建要测试的 html 并将其添加到 dom 中。然后你可以对该 html 执行任何测试

    var $body=$('$body');
    afterEach(
        $body.empty();
    );
    

    【讨论】:

      【解决方案2】:

      您可以使用jasmine-jquery 将 HTML-sn-ps 作为固定装置加载。不用怀疑名字,因为库还添加了很多custom jasmine matchers,与jQuery结合使用非常有用。

      要使用它,请将您的 karma 配置文件中的以下内容添加到 files 数组中:

      // this is the path to your library if installed via bower
      '../bower_components/jasmine-jquery/lib/jasmine-jquery.js', 
      
      // make the views available to the locally by karma started webserver 
      {pattern: 'views/*.html', watched: true, served: true, included: false},
      

      对于您的测试,您必须定义视图的路径并显式加载它们:

      beforeEach(function () {
          jasmine.getFixtures().fixturesPath = "base/views";  // path to your templates
          jasmine.getFixtures().load('myHtmlSnippet.html');   // load a template
      });
      

      这会将 ID 为 jasmine-fixturesdiv 直接加载到运行测试的浏览器的 body 中。加载的夹具将被插入到div#jasmine-fixtures。然后你可以简单地使用 jQuery 或 vanilla javascript 访问它们。

      【讨论】:

        【解决方案3】:

        在我遇到调用“服务器”数据并且不使用模型服务的示例问题之后。 我偶然发现了这个条目: E2E mock $httpBackend doesn't actually passThrough for me

        工作正常,您可以使用它 $http.get 并检查您的数据。

        如果你正在使用 Promise,也可以试试这个:https://github.com/ThomasBurleson/jasmine-as-promised

        【讨论】:

        • 我没有做端到端测试,也许我应该澄清一下。所以我不需要这个。我确实试过了,但它并没有解决我的问题。
        猜你喜欢
        • 2016-10-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-24
        • 1970-01-01
        • 2015-12-07
        • 1970-01-01
        相关资源
        最近更新 更多