javascript

java

python

c#

android

node.js

reactjs

c++

php

html

jquery

css

.net

ios

git

ruby-on-rails

sql

c

string

ruby

javascript-强制失败Jasmine tes

如果我在测试中有永远不应该到达的代码(例如,promise序列的expect(true).toBe(false);子句),如何强制测试失败?

我使用2790915011158180864之类的东西,但这并不漂亮。

另一种选择是等待测试超时,这是我想避免的(因为它很慢)。

trans by 2020-01-18T10:07:06Z

angular-使用@Input()进行Angular2单元测试

我有一个在实例变量上使用openProductPage()批注的组件,我正在尝试为openProductPage()方法编写单元测试,但是我对设置单元测试的方式有些迷惑。 我可以将该实例变量设置为公共变量,但我认为我不必诉诸于此。

如何设置茉莉花测试,以便注射(提供?)模拟产品,并且可以测试openProductPage()方法?

我的组件:

import {Component, Input} from "angular2/core";
import {Router} from "angular2/router";

import {Product} from "../models/Product";

@Component({
    selector: "product-thumbnail",
    templateUrl: "app/components/product-thumbnail/product-thumbnail.html"
})

export class ProductThumbnail {
    @Input() private product: Product;


    constructor(private router: Router) {
    }

    public openProductPage() {
        let id: string = this.product.id;
        this.router.navigate([“ProductPage”, {id: id}]);
    }
}
trans by 2020-01-17T15:41:27Z

javascript-茉莉花中的全局`beforeEach`?

我正在使用Jasmine编写测试。

我有几个测试文件,每个文件都有一个beforeEach,但是它们是完全相同的。

如何为他们提供全局beforeEach

trans by 2020-01-14T23:44:43Z

茉莉花-前端测试:什么以及如何测试以及使用什么工具?

我已经为Ruby代码编写测试了一段时间了,但是作为前端开发人员,我显然有兴趣将其引入为前端代码编写的代码中。 我一直在玩很多不同的选择:

  • 卡斯珀
  • 水豚和Rspec
  • 茉莉花
  • 黄瓜或只是Rspec

人们正在使用什么进行测试? 除此之外,人们还要测试什么? 只是JavaScript? 链接? 形式? 硬编码内容?

任何想法将不胜感激。

trans by 2020-01-14T16:00:52Z

单元测试-angular2测试,如何模拟子组件

如何在茉莉花测试中模拟子组件?

我有provide(MyService, useClass(...)),它使用MyNavbarComponentMyToolbarComponent

import {Component} from 'angular2/core';
import {MyNavbarComponent} from './my-navbar.component';
import {MyToolbarComponent} from './my-toolbar.component';

@Component({
  selector: 'my-app',
  template: `
    <my-toolbar></my-toolbar>
    {{foo}}
    <my-navbar></my-navbar>
  `,
  directives: [MyNavbarComponent, MyToolbarComponent]
})
export class MyComponent {}

在测试此组件时,我不想加载和测试这两个子组件。 MyNavbarComponent,MyToolbarComponent,所以我想对其进行模拟。

我知道如何使用provide(MyService, useClass(...))来模拟服务,但是我不知道如何模拟指令。 组件;

  beforeEach(() => {
    setBaseTestProviders(
      TEST_BROWSER_PLATFORM_PROVIDERS,
      TEST_BROWSER_APPLICATION_PROVIDERS
    );

    //TODO: want to mock unnecessary directives for this component test
    // which are MyNavbarComponent and MyToolbarComponent
  })

  it('should bind to {{foo}}', injectAsync([TestComponentBuilder], (tcb) => {
    return tcb.createAsync(MyComponent).then((fixture) => {
      let DOM = fixture.nativeElement;
      let myComponent = fixture.componentInstance;
      myComponent.foo = 'FOO';
      fixture.detectChanges();
      expect(DOM.innerHTML).toMatch('FOO');
    });
  });

这是我的小例子。

[http://plnkr.co/edit/q1l1y8?p=preview]

trans by 2020-01-11T14:48:50Z

javascript-期望数组等于忽略ord

使用Jasmine是否可以测试2个数组是否包含相同的元素,但不一定以相同的顺序? 即

array1 = [1,2,3];
array2 = [3,2,1];

expect(array1).toEqualIgnoreOrder(array2);//should be true
trans by 2020-01-08T21:10:24Z

单元测试-如何测试AngularJS自定义提供程序

有没有人提供如何对提供程序进行单元测试的示例?

例如:

config.js

angular.module('app.config', [])
  .provider('config', function () {
    var config = {
          mode: 'distributed',
          api:  'path/to/api'
        };

    this.mode = function (type) {
      if (type) {
        config.isDistributedInstance = type === config.mode;
        config.isLocalInstance = !config.isDistributedInstance;
        config.mode = type;
        return this;
      } else {
        return config.mode;
      }
    };

    this.$get = function () {
      return config;
    };
  }]);

app.js

angular.module('app', ['app.config'])
  .config(['configProvider', function (configProvider) {
    configProvider.mode('local');
  }]);

app.js正在测试中使用,我已经配置了configProvider,可以将其作为服务进行测试。 但是如何测试配置能力? 还是根本不需要?

trans by 2020-01-06T12:04:04Z

如何使用Jasmine和/或Sinon正确地对jQuery的.ajax()承诺进行单元测试?

我有一个相当简单的函数,它返回一个jQuery .ajax()这样的承诺:

CLAW.controls.validateLocation = function(val, $inputEl) {
    return $.ajax({
        url: locationServiceUrl + 'ValidateLocation/',
        data: {
            'locationName': val
        },
        beforeSend: function() {
            $inputEl.addClass('busy');
        }
    }).done(function(result) {
        // some success clauses
    }).fail(function(result) {
        // some failure clauses
    }).always(function() {
        // some always clauses
    });
}

在大多数情况下,这个新的Promise接口的工作就像一个梦想,并且在使用jQuery的.ajax()时消除回调金字塔非常有用。 但是,我无法终生思考如何使用茉莉和/或锡农来正确检验这些承诺:

  1. Sinon的所有文档均假设您使用的是老式的回调; 我没有看到如何将其与承诺/延期

  2. 尝试使用茉莉或锡农间谍来监视$ .ajax时,间谍实际上是在覆盖承诺,因此其2674406507223188188480、fail,和always子句不再存在于ajax函数上,因此Promise永远不会解决并抛出错误

我真的只是喜欢使用上述测试库来测试这些新jQuery .ajax()承诺的一个或两个示例。 我已经非常仔细地搜索了“网络”,却并没有真正疏通任何内容。 我确实找到的一个资源提到使用Jasmine.ajax,但是如果可能的话,我想避免这种情况,因为Sinon提供了大多数现成的功能。

trans by 2019-12-26T07:19:34Z

npm-错误:没有“ framework:jasmine”的提供者! (解决:框架:茉莉花)

我已经在Windows控制台上运行:

npm install -g yo grunt-cli bower

npm install -g generator-angular

yo angular

然后,我使用webstorm启动了我的项目,并在项目浏览器中的karma.conf.js文件上单击了鼠标右键,在该文件中,我具有菜单项“ Run karma.conf.js”并启动karma运行程序。 然后我得到他的例外:

...\app\node_modules\karma\node_modules\di\lib\injector.js:9
      throw error('No provider for "' + name + '"!');
            ^
Error: No provider for "framework:jasmine"! (Resolving: framework:jasmine)

然后在控制台上我读到我也可以使用--force,所以我尝试了:grunt --force

花了一些时间,但似乎没有更多错误了。 哎呀--force为什么要安装提供程序??? 这已在CMD中进行了测试。

grunt serve现在可以正常工作了,它通过启动应用启动了我的浏览器。

那么,--force在做什么呢?“错误:“ framework:jasmine”没有提供者! (解决:framework:jasmine)'走了吗?

当我在webstorm IDE中发出咕unt声时,我再次得到:

警告:没有“ framework:jasmine”的提供者! (解决:framework:jasmine)使用--force继续。

因此这个问题没有解决。

trans by 2019-12-25T10:57:06Z

javascript-将对象类型与Jasmine的toHaveBeenCalledWith方法一起使用

我刚刚开始使用Jasmine,因此请原谅新手问题,但是使用toHaveBeenCalledWith时是否可以测试对象类型?

expect(object.method).toHaveBeenCalledWith(instanceof String);

我知道我可以,但是它正在检查返回值而不是参数。

expect(k instanceof namespace.Klass).toBeTruthy();
trans by 2019-11-15T22:31:21Z

javascript-如何测试是否尚未调用函数?

我正在测试路由器,并且具有两个功能,并且我需要测试是否调用了第一个功能,是否未调用第二个功能。 有方法toHaveBeenCalled,但是没有方法可以测试是否未调用函数。 我该如何测试?

我有这样的代码:

var args, controller, router;
beforeEach(function() {
    controller = {
        foo: function(name, id) {
            args = [].slice.call(arguments);
        },
        bar: function(name) {
        }
    };
    spyOn(controller, "foo").and.callThrough();
    spyOn(controller, "bar").and.callThrough();
    router = new route();
    router.match('/foo/bar/{{id}}--{{name}}', controller.foo);
    router.match('/foo/baz/{{id}}--{{name}}', controller.bar);
    router.exec('/foo/bar/10--hello');
});
it('foo route shuld be called', function() {
    expect(controller.foo).toHaveBeenCalled();
});
it('bar route shoud not be called', function() {
    // how to test if bar was not called?
});
trans by 2019-11-15T21:17:27Z

javascript-Angular2测试:ComponentFixture中的DebugElement和NativeElement对象之间有什么区别?

我目前正在汇总一些最佳实践,以在组件级别上测试Angular 2应用程序。

我看过一些教程,查询灯具的NativeElement对象以获取选择器等,例如

it('should render "Hello World!" after click', async(() => {
    builder.createAsync(HelloWorld).then((fixture: ComponentFixture<HelloWorld>) => {
      fixture.detectChanges();
      let compiled = fixture.debugElement.nativeElement;
      compiled.querySelector('h1').click();
      fixture.detectChanges();
            
      expect(compiled.querySelector('h1')).toHaveText('Hello World!');
    });
}));

但是,在juliemr的Angular 2测试种子中,她通过父DebugElement对象访问NativeElement。

it('should render "Hello World!" after click', async(() => {
    builder.createAsync(HelloWorld).then((fixture: ComponentFixture<HelloWorld>) => {
      fixture.detectChanges();
      let compiled = fixture.debugElement.nativeElement;
      compiled.querySelector('h1').click();
      fixture.detectChanges();
            
      expect(compiled.querySelector('h1')).toHaveText('Hello World!');
    });
}));

您是否在其nativeElement上使用灯具的debugElement.nativeElement有什么特定情况?

trans by 2019-11-05T09:01:03Z

javascript-茉莉花2.0异步完成()和角-inject()在同一测试中it()

我通常的测试用例看起来像

it("should send get request", inject(function(someServices) {
     //some test
}));

而且Jasmine 2.0异步测试应该看起来像

it("should send get request", function(done) {
     someAsync.then(function(){
         done();
     });
});

如何在一次测试中同时使用完成和注入?

trans by 2019-10-15T15:59:27Z

在JavaScript中模拟window.location.href

我对使用window.location.href的函数进行了一些单元测试-不理想,我宁愿将其传递给它,但在实现中是不可能的。 我只是想知道是否有可能在不实际导致测试运行器页面实际转到URL的情况下模拟该值。

  window.location.href = "http://www.website.com?varName=foo";    
  expect(actions.paramToVar(test_Data)).toEqual("bar"); 

我将茉莉花用于我的单元测试框架。

trans by 2019-10-13T09:19:51Z

茉莉花-如何仅使用angular-cli执行一个测试规范

我有使用Angular-CLI(beta 20)构建的Angular2项目。

有没有一种方法可以仅对一个选定的规格文件运行测试?

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

trans by 2019-10-11T02:39:31Z

javascript-将对console.log()的调用重定向到Jasmine测试中的标准输出

我通过jasmine-maven-plugin使用Jasmine,我想在Maven构建输出中看到console.log()消息。 有没有办法做到这一点?

如果console.log()无法重定向,是否还有其他方法可以从我的测试中记录日志,以便它们显示在Maven构建输出中?

我正在以无头的方式在Jenkins上运行这些测试,并且希望从测试中获得一些调试输出。

trans by 2019-10-08T04:46:50Z

测试-Sinon JS“试图包装已经包装的Ajax”

我运行测试时收到上述错误消息。 下面是我的代码(我正在使用Backbone JS和Jasmine进行测试)。 有谁知道为什么会这样吗?

$(function() {
  describe("Category", function() {
     beforeEach(function() {
      category = new Category;
      sinon.spy(jQuery, "ajax");
     }

     it("should fetch notes", function() {
      category.set({code: 123});
      category.fetchNotes();
      expect(category.trigger).toHaveBeenCalled();
     }
  })
}
trans by 2019-10-08T01:38:17Z

使用Jasmine进行单元测试时,如何在AngularJS中模拟服务?

假设我有一个服务shop,它依赖于两个有状态服务schedulewarehouse。如何将2551289630868868387和warehose的不同版本注入warehose进行单元测试?

这是我的服务:

angular.module('myModule').service('shop', function(schedule, warehouse) {
    return {
        canSellSweets : function(numRequiredSweets){
             return schedule.isShopOpen()
                 && (warehouse.numAvailableSweets() > numRequiredSweets);
        }
    }
});

这是我的模拟:

var mockSchedule = {
    isShopOpen : function() {return true}
}
var mockWarehouse = {
    numAvailableSweets: function(){return 10};
}

这是我的测试:

expect(shop.canSellSweets(5)).toBe(true);
expect(shop.canSellSweets(20)).toBe(false);
trans by 2019-10-02T08:54:01Z

angularjs-如何测试角度事件?

我需要测试事件是否正确发出或广播,并手动触发事件。

最好的方法是什么?

trans by 2019-10-01T00:26:32Z

javascript-如何在Jasmine中以编程方式清除间谍?

我们如何以编程方式清除茉莉花测试套件中的间谍? 谢谢。

beforeEach(function() {
  spyOn($, "ajax").andCallFake(function(params){
  })
})

it("should do something", function() {
  //I want to override the spy on ajax here and do it a little differently
})
trans by 2019-09-30T13:47:55Z

1 2 3 下一页 共3页