GVKun编程网logo

angularjs – 找不到插件“karma-jasmine”(angular插件库)

14

对于想了解angularjs–找不到插件“karma-jasmine”的读者,本文将是一篇不可错过的文章,我们将详细介绍angular插件库,并且为您提供关于AngulaJs自动化测试之Karma和J

对于想了解angularjs – 找不到插件“karma-jasmine”的读者,本文将是一篇不可错过的文章,我们将详细介绍angular插件库,并且为您提供关于AngulaJs自动化测试之Karma和Jasmine、Angular 6.0和Karma Jasmine – 测试结束后浏览器关闭、Angular w / Jasmine和Karma测试了模拟服务、Angular 使用 Jasmine 和 Karma 获取 - 不完整:未找到规格的有价值信息。

本文目录一览:

angularjs – 找不到插件“karma-jasmine”(angular插件库)

angularjs – 找不到插件“karma-jasmine”(angular插件库)

当我运行业力开始我面对这个错误

31 12 2015 09:59:40.923:WARN [plugin]: Cannot find plugin "karma-jasmine".
  Did you forget to install it ?
  npm install karma-jasmine --save-dev
31 12 2015 09:59:40.934:WARN [plugin]: Cannot find plugin "karma-phantomjs-launcher".
  Did you forget to install it ?
  npm install karma-phantomjs-launcher --save-dev
/home/ubuntu/.nvm/versions/node/v4.2.1/lib/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)

很明显它抱怨,因为它没有业力 – 茉莉
我运行这个命令

sudo npm install karma-jasmine --save-dev

确保它已安装,作为回应,它给了我这条消息

npm WARN package.json taksi_client@1.0.0 No description
npm WARN package.json taksi_client@1.0.0 No repository field.
npm WARN package.json taksi_client@1.0.0 No README data
karma-jasmine@0.3.6 node_modules/karma-jasmine.

我的意思是,在我看来,已经安装了karma-jasmin.
然后我试了

sudo npm install karma-phantomjs-launcher --save-dev

问题是,我希望在这两个命令之后,我可以运行业力开始
但又抱怨说,找不到插件“karma-jasmin”

更新:
我在package.json中有这个:

"devDependencies": {
    "karma": "^0.13.15","karma-chrome-launcher": "^0.2.2","karma-jasmine": "^0.3.6","karma-phantomjs-launcher": "^0.2.2"
  }

解决方法

在我看来,解决方案是在

npm install -g karma-cli

AngulaJs自动化测试之Karma和Jasmine

AngulaJs自动化测试之Karma和Jasmine

一、入门简介

Karma和Jasmine的基本了解,参考另外一篇文章Angularjs官方示例项目之单元测试套件karma-jasmine


二、Karma配置

TBD


三、Jasmine

Jasmine的官方文档参考:Jasmine Behavior-Driven JavaScript Documentation 上面有很一个很详细的测试示例。

套件细则spec

Jasmine的核心套件是describe()函数,它是一个全局函数,可以在测试时被全局调用。

describe(specName, function(){})函数有两个参数,分别是细则spec套件的名字和测试套件的函数。describe()是可以嵌套的,也就是说可以在一个describe()的第二个参数函数中,再定义个describe()。

通过调用it()全局函数来在describe()中定义一个细则spec。

describe(''A spec suite'', functoin(){
    it(''constains a equal spec'', {
        expect(true).toBe(ture);
    });
});

一个describe()中可以有多个细则spec,同时,一个spec细则中也可以有多个预期expect断言项。但是,只有一个细则中所以的断言项目都通过,才算是通过一个细则spec。


设置函数beforeEach和afterEach

beforeEach(functon) 传入的参数是一个函数,该函数会在每个细则describe运行之前被调用。

同理,afterEach(function)则是在每个细则describe运作之后被调用。


预期与匹配器(断言库)

测试时,我们是想要知道某个断言条件下应用是符合我们的预期expect的。比如:“如果我们点击了这个按钮,我们会期望有什么结果。”在jasmine中,使用expect(needTestedValue)函数来创建这个预期,其参数表示我们真实的需要被测试的值。

相应的,有需要测试的值,就有我们期待的值。这个期待值就保存在匹配器macher,比如内置的toBe(expectedValue)中。

最后的语法类似与

expect(needTestedValue).macher(expectValue)

一个代码示例如下:

describe(''A spec suite'', functoin(){
    it(''constains a equal spec'', {
        expect(true).toBe(ture);
    });
    
    // you can use ''not''
     it(''constains a  not equal spec'', {
        expect(true).not.toBe(false);
    });   
});


内置的匹配器有:

//比较x和y是否值相等,相当于==
expect(x).toEqual(y);

//比较x和y是否不相等
expect(x).not.toEqual(y);

//比较x和y是否是相同的对象,相当于JavaScript中的"==="
expect(x).toBe(y);

//比较x是否匹配pattern正则
expect(x).toMatch(pattern);

//x是否为undefined
expect(x).toBeDefined();

//x是否为null
expect(x).toBeNull();

//x是否为true
expect(x).toBeTruthy();

//x是否为false
expect(x).toBeFalsy();

//y是在数组x中(x可以是字符串或数组)
expect(x).toContain(y);

//x是否比y小
expect(x).toBeLessThan(y);

//x是否比y大
expect(x).toBeGreaterThan(y);

//x是否在一个指定的浮点精度内与y相近
expect(x).toBeCloseTo(y);

//函数是否抛出异常
expect(fn).toThrow(e);

自定义匹配器

自定义方法是在Jasmine块中调用addMachers()函数

describe(''A spec suite'', functoin(){
    tihs.addMachers({
        customerMacher: function(expected) {
            // customer rule
            return this.actual <= expected;
        }
    });
});

这样就可以在测试套件中使用自定义的  customerMacher 匹配器了。


Angular 6.0和Karma Jasmine – 测试结束后浏览器关闭

Angular 6.0和Karma Jasmine – 测试结束后浏览器关闭

我目前正在研究Angular 6.0的单元测试.我正在使用捆绑了一个新的Angular项目的Karma和Jasmine来运行测试.测试运行正常,但是每次测试运行后浏览器都会自动关闭,这意味着任何失败的测试几乎都无法调试.

我试过玩配置,没有成功.我很确定没有任何东西覆盖配置,我知道使用了这种配置(例如在修改浏览器阵列后,我现在有多个浏览器启动).

我通过运行’ng test’命令执行测试.试图执行’业力开始’似乎不起作用 – 不确定这是否相关.

这是karma.conf.js:

module.exports = function (config) {
  config.set({
    basePath: '',frameworks: ['jasmine','@angular-devkit/build-angular'],plugins: [
      require('karma-jasmine'),require('karma-chrome-launcher'),require('karma-edge-launcher'),require('karma-firefox-launcher'),require('karma-jasmine-html-reporter'),require('karma-coverage-istanbul-reporter'),require('@angular-devkit/build-angular/plugins/karma')
    ],client: {
      clearContext: false // leave Jasmine Spec Runner output visible in browser
    },coverageIstanbulReporter: {
      dir: require('path').join(__dirname,'../coverage'),reports: ['html','lcovonly'],fixWebpackSourcePaths: true
    },reporters: ['progress','kjhtml'],port: 9876,colors: true,logLevel: config.LOG_INFO,autoWatch: true,browsers: ['Chrome','Firefox','Edge'],singleRun: false
  });
};

“singleRun”似乎与autoWatch无关.

解决方法

这是角度为6的错误. github issue is here.

解决方法是ng测试 – 手表. Hat tip Ryan McCormick

Angular w / Jasmine和Karma测试了模拟服务

Angular w / Jasmine和Karma测试了模拟服务

您可以注入它并创建间谍来模拟您要模拟/测试的内容:

const aboutService = TestBed.inject(AboutService);

const spy = spyOn(aboutService,'getSkills').and.returnValue(of({...});
...
expect(spy).toHaveBeenCalled();

Angular 使用 Jasmine 和 Karma 获取 - 不完整:未找到规格

Angular 使用 Jasmine 和 Karma 获取 - 不完整:未找到规格

filesinclude 条目对我来说很陌生。

尝试删除它们:

module.exports = function (config) {
  config.set({
    basePath: "",frameworks: ["jasmine","@angular-devkit/build-angular"],plugins: [
      require("karma-jasmine"),require("karma-chrome-launcher"),require("karma-jasmine-html-reporter"),require("karma-coverage-istanbul-reporter"),require("@angular-devkit/build-angular/plugins/karma"),],client: {
      clearContext: false,// leave Jasmine Spec Runner output visible in browser
    },coverageIstanbulReporter: {
      reports: ["html","lcovonly"],fixWebpackSourcePaths: true,},// files: ["src/**/*.spec.js"],// include: ["src/**/*.spec.js"],angularCli: {
      environment: "dev",reporters: ["progress","kjhtml"],port: 9876,colors: true,logLevel: config.LOG_INFO,autoWatch: true,browsers: ["Chrome"],singleRun: false,});
};

尝试创建一个与您的 Angular 版本相同的新 CLI 项目,并将 karma.conf.js 与您的进行比较。

今天关于angularjs – 找不到插件“karma-jasmine”angular插件库的分享就到这里,希望大家有所收获,若想了解更多关于AngulaJs自动化测试之Karma和Jasmine、Angular 6.0和Karma Jasmine – 测试结束后浏览器关闭、Angular w / Jasmine和Karma测试了模拟服务、Angular 使用 Jasmine 和 Karma 获取 - 不完整:未找到规格等相关知识,可以在本站进行查询。

本文标签: