小编dan*_*lmb的帖子

如何在AngularJS中对隔离范围指令进行单元测试

在AngularJS中单元测试隔离范围的好方法是什么

JSFiddle显示单元测试

指令片段

    scope: {name: '=myGreet'},
    link: function (scope, element, attrs) {
        //show the initial state
        greet(element, scope[attrs.myGreet]);

        //listen for changes in the model
        scope.$watch(attrs.myGreet, function (name) {
            greet(element, name);
        });
    }
Run Code Online (Sandbox Code Playgroud)

我想,以确保指令监听的变化-这并不会与一个孤立的范围内工作:

    it('should watch for changes in the model', function () {
        var elm;
        //arrange
        spyOn(scope, '$watch');
        //act
        elm = compile(validHTML)(scope);
        //assert
        expect(scope.$watch.callCount).toBe(1);
        expect(scope.$watch).toHaveBeenCalledWith('name', jasmine.any(Function));
    });
Run Code Online (Sandbox Code Playgroud)

更新: 我通过检查预期观察者是否被添加到子范围来实现它,但它非常脆弱,并且可能以未记录的方式使用访问者(也可能更改,恕不另行通知!).

//this is super brittle, is there a better way!?
elm = compile(validHTML)(scope);
expect(elm.scope().$$watchers[0].exp).toBe('name');
Run Code Online (Sandbox Code Playgroud)

更新2: 正如我所说,这很脆弱!这个想法仍然有效,但在较新版本的AngularJS中,访问者已经从以下scope()变为isolateScope(): …

javascript unit-testing jasmine angularjs angularjs-directive

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

PhoneGap是否支持应用程序内购买?

有没有人使用David Orchard的分叉用于PhoneGap的应用内购买?它在一年多来没有更新.根据这个线程, Urban Airship还无法帮助.

javascript iphone app-store in-app-purchase cordova

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

是否有ASP.NET MVC的混合身份验证处理ASP.NET模块(MADAM)的端口?

混合身份验证配置ASP.NET模块(MADAM)正是我在MVC2中构建的项目所需要的.我不是身份验证专家,MADAM可以快速改装以使用MVC管道吗?

http://msdn.microsoft.com/en-us/library/aa479391.aspx

说明FormsAuthenticationDispositionModule如何挂起Forms身份验证工作流,以及FormsAuthenticationDispositionModule完成其工作后BasicAuthenticationModule如何向传出响应添加必要的标头.

.net c# asp.net authentication asp.net-mvc

9
推荐指数
1
解决办法
1111
查看次数

使用Google Closure Compiler可以从编译版本中排除一部分源代码吗?

我最近使用Dojo工具包构建了一个项目,并且喜欢如何将一段代码标记为仅基于任意条件检查包含在编译版本中.我用它来导出私有变量进行单元测试或抛出错误而不是记录它们.这是Dojo格式的一个例子,我很想知道Google Closure Compiler是否有这样的特殊指令.

window.module = (function(){

  //private variable
  var bar = {hidden:"secret"};

  //>>excludeStart("DEBUG", true);
    //export internal variables for unit testing 
    window.bar = bar;
  //>>excludeEnd("DEBUG");

  //return privileged methods
  return {
    foo: function(val){
      bar.hidden = val;
    }
  };
})();
Run Code Online (Sandbox Code Playgroud)

编辑

关闭权威指南提到您可以扩展CommandLineRunner以添加您自己的检查和优化,这可能是一种方法.Plover看起来很有前途,因为它支持自定义传递.

javascript unit-testing google-closure-compiler

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

如何在命令行中禁用新的NPM微调器?

它正在破坏我的单元测试的显示,是否有一个简单的方法来关闭它?

在此输入图像描述

command-line unit-testing spinner npm

7
推荐指数
2
解决办法
2174
查看次数