小编cod*_*igo的帖子

在AngularJS单元测试中模拟$ modal

我正在为一个控制器编写一个单元测试,该控制器启动$modal并使用返回的promise来执行某些逻辑.我可以测试触发$ modal的父控制器,但我不能为我的生活弄清楚如何模拟成功的承诺.

我尝试了很多方法,包括使用$q$scope.$apply()强制解决承诺.然而,我得到的最接近的东西是把这个 SO帖子中的最后一个答案放在一起;

我已经看过这个用"旧" $dialog模态问了几次.关于如何使用"新" $dialog模式,我找不到多少.

一些指针将受到赞赏.

为了说明问题,我正在使用UI Bootstrap文档中提供示例,并进行了一些小的编辑.

控制器(主要和模态)

'use strict';

angular.module('angularUiModalApp')
    .controller('MainCtrl', function($scope, $modal, $log) {
        $scope.items = ['item1', 'item2', 'item3'];

        $scope.open = function() {

            $scope.modalInstance = $modal.open({
                templateUrl: 'myModalContent.html',
                controller: 'ModalInstanceCtrl',
                resolve: {
                    items: function() {
                        return $scope.items;
                    }
                }
            });

            $scope.modalInstance.result.then(function(selectedItem) {
                $scope.selected = selectedItem;
            }, function() {
                $log.info('Modal dismissed at: ' + new Date());
            });
        };
    })
    .controller('ModalInstanceCtrl', function($scope, $modalInstance, items) …
Run Code Online (Sandbox Code Playgroud)

unit-testing angularjs angular-ui-bootstrap

66
推荐指数
2
解决办法
4万
查看次数

AngularJS假$ httpBackend.whenPOST()Uncaught TypeError:无法读取未定义的属性'2'

对于AngularJS来说很新,并且按照文档中的描述得到了一个模拟的$ httpBackend(参见这里:http://docs.angularjs.org/api/ngMockE2E.$httpBackend).我可以重现GET代码,例如:

$httpBackend.whenGET('/phones').respond(phones);
Run Code Online (Sandbox Code Playgroud)

但是,POST方法因angular-mocks.js错误而失败.这是我指定在POST上发生的事情:

      $httpBackend.whenPOST('/phones').respond(function(method,url,data){
        console.log(data);
        phones.push(angular.fromJson(data));
  });
Run Code Online (Sandbox Code Playgroud)

这是我从控制器调用POST的方式:

  var newPhone = {name:'New Phone'};
  $http.post('/forecasts/types.json', newPhone);
Run Code Online (Sandbox Code Playgroud)

这就是我在控制台中看到的回应:

{"name":"New Phone"}  app.js:167

Uncaught TypeError: Cannot read property '2' of undefined angular-mocks.js:876
(anonymous function) angular-mocks.js:876
completeOutstandingRequest angular.js:2930
(anonymous function) angular.js:3209
Run Code Online (Sandbox Code Playgroud)

我的代码看起来与文档几乎相同.在POST时调用该函数,但我无法弄清楚为什么它不会运行.

编辑(感谢Josh David Miller的评论是一个小提琴)这是一个重现错误 的小提琴:http://jsfiddle.net/elcabo/btbds/3/小提琴是基于Angular文档中的例子(http ://docs.angularjs.org/api/ngMockE2E.$httpBackend)和mockE2E $ httpBackend(http://jsfiddle.net/vojtajina/DQHdk/)的角度小提琴

有没有人遇到这个或有任何关于如何攻击这个的想法?

我已经搜索了相当广泛的解决方案/相关帖子,但找不到任何,所以任何指针都将非常感激.

非常感谢.

angularjs

8
推荐指数
1
解决办法
2万
查看次数

AngularJS验证一次以使用多个应用程序

我想做什么

我即将构建一个门户风格的应用程序,就像在这篇SO帖子中描述的那样.我正在寻找的行为我希望最好通过下面的模型序列来描述: 登录mainsite.com/ 登录后,用户可以访问3个单独的Angular应用程序 在任何给定的应用程序中,用户的信用是可访问的

总结一下我所追求的行为:

  1. 用户访问mainsite.com/并被要求登录,一旦通过身份验证,将显示三个不同应用程序的三个链接.

  2. 点击任何给定的应用程序(上面示例中的mainsite.com/app1/)将为每个应用程序选择一个,但记住用户已登录.如果可以嵌套ngApps但我不知道可以执行此操作,这将有效.

潜在的方法(我能想到)

  1. 将身份验证逻辑和数据附加到$ window(有点像这篇文章).页面刷新可能会导致这种情况失败,并且它将涉及在页面中有4个应用程序(三个子应用程序和一个扮演主页面应用程序的角色).

  2. 删除一个cookie,其中包含相关的会话信息,每当有人访问任何子应用程序以及它们之间时,这些信息就会被提取.我对此感到不安,但表现出一些希望?

  3. 在这个时刻,我没有第三个想法.

我想我正在寻找的是令人敬畏的http-auth-interceptor模块的扩展,但是跨应用程序的持久性.

有没有人遇到过这个问题并解决了它或者有任何其他想法如何解决它?解决方案甚至可能会像我为使门户网站工作而想到的设计而徘徊,但我看不到它.

欢迎任何想法,非常感谢.

angularjs

7
推荐指数
1
解决办法
1401
查看次数

允许与Yeoman(1.0)grunt服务器进行跨域调用

直到昨天我决定在OS X上使用beta 1.0版本时,我一直在使用Yeoman 0.9.我使用Yeoman开发了一个角度应用程序.

随着Yeoman 0.9 - > 1.0迁移我的应用程序完成并正常工作,我现在热衷于扩展开发服务器 自耕农grunt服务器允许我对另一个团队开发的API进行跨域调用,托管在另一个服务器上,他们已经允许跨域调用.到目前为止,我们一直在使用angular.js提供的虚假http后端.

- 旁边 -

如果有人在阅读本文寻找快速解决方案,我们通过在OS X上使用Chrome的这种方法从命令行将--disable-web-security选项传递给Chrome来实现跨域调用,但它会关闭所有人的安全性Chrome(大拇指朝下)我们无法将Chrome作为一个新实例启动.

- 结束 -

通过一些挖掘,我发现这个Stack Overflow帖子(通过这篇文章的答案)给了我一个很好的想法,我需要做些什么来让grunt服务器允许跨域调用.它主要涉及添加一个中间件组件进行连接以允许更改标头,以便"Access-Control-Allow-Origin"设置为"*"或任何人喜欢.

什么都不知道Node.js,我可以看到帖子中提到的变化需要在Yeoman创建的许多文件中的哪个位置,但在哪里?我已经在Yeoman设置的"node_modules"目录中对"app.configure"和"connect.listen"进行了一些原始字符串搜索,但我想出了一些点击,其中大部分来自与模块捆绑在一起的示例我不清楚我应该编辑哪个.如果它有帮助,这里是我的角度应用程序的目录结构的快照:

在此输入图像描述

如果有人能给我一些关于这些变化可能在哪里的指示,我真的很感激!

connect node.js angularjs gruntjs yeoman

6
推荐指数
1
解决办法
5847
查看次数

使用JSON.Net的WCF RESTful Web服务:避免双序列化

很长一段时间,这里有第一次海报.我几天来一直在努力解决这个问题,并希望得到任何提示.我在下面分解了这个问题.

我想要实现的目标:
我想建立一个JSON WCF Web服务,但我想使用JSON.net序列化程序而不是WCF附带的序列化程序.为什么?因为我发现使用WCF附带的序列化会增加集合(我将在下面展示一个我的意思的例子).该服务的最终消费者将成为一个JavaScript客户端,因此我不希望客户端做更多的麻烦来浏览JSON.

我想出了一个我想要的简单示例,并着手尝试使其在C#中运行.我必须承认在很长一段时间内没有使用.NET,这可能导致我的缓慢.无论如何,我对它有耐心等待.

所以,我想要一个接受用户名的服务,并返回一个带有用户信息的JSON对象.我设想这样的服务被称为:

http://someHostName/whoareyou?username=paul
Run Code Online (Sandbox Code Playgroud)

并让服务回应:

{
    "errorCode": 0,
    "payLoad"  :  {
        "userFullName": "Paul The Octopus",
        "userLevel"        : "Administrator"
    }
}
Run Code Online (Sandbox Code Playgroud)

我可以轻松地在JavaScript或PHP中使用上述响应的JSON对象,并且对自己感觉非常好.

经过一些谷歌搜索后,我发现了一些帖子,暗示这对于.NET Framework 4中的WCF很容易.我刚刚在一个课程上做了一些摆弄WCF,但很久就忘记了99%,所以我找到并关注这篇文章适应我的目标:http: //www.codeproject.com/Articles/105273/Create-RESTful-WCF-Service-API-Step-By-Step-Guide#

尝试1:
按照上面的帖子,我能够设置一个WCF服务(下面列出的代码),它做了我想要的但是生成的JSON输出有点臃肿,如下所示.

RestServiceImpl.svc.cs文件

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using Newtonsoft.Json;
using System.Collections.Specialized;
//Based on this psot: http://www.codeproject.com/Articles/105273/Create-RESTful-WCF-Service-API-Step-By-Step-Guide

namespace RestService
{
    public class RestServiceImpl : IRestServiceImpl
    {
        #region IRestService Members

        public WhoAreYouResponse whoareyou(string username)
        {
            var payLoad = new Dictionary<string, string>
            {
                {"userFullName", …
Run Code Online (Sandbox Code Playgroud)

rest wcf json

4
推荐指数
1
解决办法
1万
查看次数