标签: jasmine

运行单个测试文件

有没有办法运行ng test单个文件而不是整个测试套件?理想情况下,我想在编辑文件时获得最快的反馈循环,但是karma在每次保存时执行整个套件,这在构建足够大的测试套件时有点慢.

jasmine karma-runner angular-cli angular

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

如何使用Jasmine窥探值属性(而不是方法)

Jasmine spyOn是改变方法行为的好方法,但有没有办法改变对象的值属性(而不是方法)?代码可能如下所示:

spyOn(myObj, 'valueA').andReturn(1);
expect(myObj.valueA).toBe(1);
Run Code Online (Sandbox Code Playgroud)

javascript unit-testing mocking jasmine

95
推荐指数
6
解决办法
9万
查看次数

如何只使用angular-cli执行一个测试规范

我使用Angular-CLI(beta 20)构建了Angular2项目.

有没有办法只针对一个选定的spec文件运行测试?

我曾经有一个基于Angular2快速启动的项目,我可以手动将规范添加到jasmine文件中.但是我不知道如何在业力测试之外设置它,或者如何使用Angular-CLI构建将业力测试限制为特定文件.

jasmine angular-cli angular

89
推荐指数
9
解决办法
7万
查看次数

如何测试Jasmine中的值是"大于或等于"?

我想确认一个值是十进制(或0),因此该数字应大于或等于零小于1.

describe('percent',function(){  

  it('should be a decimal', function() {

    var percent = insights.percent; 
    expect(percent).toBeGreaterThan(0);
    expect(percent).toBeLessThan(1);

  });

});
Run Code Online (Sandbox Code Playgroud)

我如何模仿"> = 0"?

javascript tdd jasmine

85
推荐指数
6
解决办法
6万
查看次数

如何在Jasmine间谍上为多个调用设置不同的返回值

说我在监视这样的方法:

spyOn(util, "foo").andReturn(true);
Run Code Online (Sandbox Code Playgroud)

被测功能util.foo多次调用.

是否有可能true在第一次调用间谍时返回,但false第二次返回?或者有不同的方式来解决这个问题?

javascript unit-testing jasmine

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

如何在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万
查看次数

检查Jasmine中的对象相等性

Jasmine有内置的匹配器toBetoEqual.如果我有这样的对象:

function Money(amount, currency){
    this.amount = amount;
    this.currency = currency;

    this.sum = function (money){
        return new Money(200, "USD");
    }
}
Run Code Online (Sandbox Code Playgroud)

并尝试比较new Money(200, "USD")和和的结果,这些内置的匹配器将无法按预期工作.我已经设法基于自定义equals方法和自定义匹配器实现了一种解决方法,但它似乎很有效.

比较Jasmine中对象的标准方法是什么?

javascript bdd object-comparison jasmine

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

_servicename_中的下划线在AngularJS测试中意味着什么?

在下面的示例测试中,原始提供者名称是APIEndpointProvider,但是对于注入和服务实例化,约定似乎必须注入包含它的下划线.这是为什么?

'use strict';

describe('Provider: APIEndpointProvider', function () {

  beforeEach(module('myApp.providers'));

  var APIEndpointProvider;
  beforeEach(inject(function(_APIEndpointProvider_) {
    APIEndpointProvider = _APIEndpointProvider_;
  }));

  it('should do something', function () {
    expect(!!APIEndpointProvider).toBe(true);
  });

});
Run Code Online (Sandbox Code Playgroud)

我错过了一个更好的解释是什么?

unit-testing jasmine angularjs angularjs-service

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

单元测试具有依赖关系的AngularJS工厂

当单元测试Angular工厂(使用Karma + Jasmine)时,如何将存根依赖注入到被测工厂中?

这是我的工厂:

mod = angular.module('myFactoryMod', []);

mod.factory('myFactory', [
  '$log', 'oneOfMyOtherServices', function($log, svc) {
    return makeSomethingThatDoesSomethingWithTheseDependencies($log, svc);
  }
]);
Run Code Online (Sandbox Code Playgroud)

oneOfMyOtherServices 实例化我的工厂时需要.

这是我的测试:

it('can get an instance of my factory', function() {
  var oneOfMyOtherServicesStub;

  angular.mock.module('myFactoryMod');

  oneOfMyOtherServicesStub = {
    someVariable: 1
  };

  //****How do I get my stub in my target? ****

  angular.mock.inject(['myFactory', function(target) {

      expect(target).toBeDefined();

    }
  ]);
})
Run Code Online (Sandbox Code Playgroud)

NB我知道这$controller允许控制器,但我没有看到工厂的等价物.

jasmine angularjs karma-runner

76
推荐指数
2
解决办法
6万
查看次数

对于Rails 3.1+的Jasmine vs. Mocha JavaScript测试

我有使用Jasmine的经验,并且非常喜欢它.有没有人有茉莉花和摩卡的经验,特别是对于Rails?我想知道是否值得转换.

javascript ruby-on-rails mocha.js jasmine

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