【问题标题】:How do you test AngularJS cookies in an end-to-end test?您如何在端到端测试中测试 AngularJS cookie?
【发布时间】:2013-07-28 17:03:50
【问题描述】:

我有一个简单的服务,可以将 cookie 设置为 angular,但没有明显的方法可以测试它们是否已在端到端测试中设置。

要测试的代码很简单

var splashApp = angular.module('splashApp', ['ngCookies']);
splashApp.controller('FooterController', function ($location, $cookies) {
    $cookies.some_cookie = $location.absUrl();
});

但我找不到任何关于如何测试的文档。这是我发现的:

我也试过

angular.scenario.dsl('cookies', function() {
  var chain = {};
  chain.get = function(name) {
    return this.addFutureAction('get cookies', function($window, $document, done) {
      var injector = $window.angular.element($window.document.body).inheritedData('$injector');
      var cookies = injector.get('$cookies');
      done(null, cookies);
    });
  };
  return function() {
    return chain;
  }
});

但这只会返回父浏览器的 cookie,而不是我要测试的页面。

关于如何做到这一点的任何示例?

【问题讨论】:

  • 我假设您正在使用 cookie 做一些事情,可能会在您的程序中更改 CSS 类 - 任何有效地将 cookie 的值绑定到外部的东西。尝试测试一下?
  • 其实我不是。 cookie 存储在会话中的某个时间点,然后与 POST 请求一起(自动)发送到服务器。遗憾的是,由于 cookie,UI 没有发生变化。
  • 你读过这个吗? pastie.org/4758669

标签: testing angularjs end-to-end


【解决方案1】:

看来您需要使用PhantomJS

PhantomJS 是一个可使用 JavaScript API 编写脚本的无头 WebKit。它 对各种 Web 标准具有快速和原生的支持:DOM 处理, CSS 选择器、JSON、Canvas 和 SVG。 --PhantomJS website

它的 API 支持自定义 cookie。 在测试方面,这可能是您的最佳选择。 您可能还想查看CasperJS 以帮助测试页面导航。

【讨论】:

    猜你喜欢
    • 2014-03-20
    • 2013-07-09
    • 2014-08-14
    • 2018-06-26
    • 1970-01-01
    • 2016-06-07
    • 1970-01-01
    • 2022-11-29
    • 2014-01-10
    相关资源
    最近更新 更多