如何在端到端测试中测试AngularJS cookies?

6
我可以帮您翻译成中文。这段内容涉及到IT技术,主要是关于在Angular中设置cookie以及如何在端到端测试中验证cookie是否被设置的问题。
下面是需要翻译的内容:

我有一个简单的服务,用于在Angular中设置cookie,但在端到端测试中,没有明显的方法来测试它们是否被设置。

测试代码非常简单:

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。

有关如何执行此操作的示例吗?


我会假设你的程序是在处理 cookie,可能会更改 CSS 类。任何有效地将 cookie 值绑定到外部某些东西的方法都可以尝试测试一下? - jclancy
实际上我不是。Cookie 在某个时刻存储在会话中,然后它们随着 POST 请求自动发送到服务器。很遗憾,由于 Cookie 没有 UI 更改。 - Darrell Silver
你看过这个吗?http://pastie.org/4758669 - jclancy
1个回答

0

看起来你需要使用PhantomJS

PhantomJS是一个无头的WebKit,可通过JavaScript API进行脚本化。它快速且本地支持各种Web标准:DOM处理、CSS选择器、JSON、Canvas和SVG。--PhantomJS网站

它在其API中支持自定义cookie。就测试而言,这可能是你最好的选择。你还可以查看CasperJS以帮助测试页面导航。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接