中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久

使用Jasmine和Karma對AngularJS頁面程序進行測試
來源:易賢網 閱讀:1304 次 日期:2016-08-02 14:54:33
溫馨提示:易賢網小編為您整理了“使用Jasmine和Karma對AngularJS頁面程序進行測試”,方便廣大網友查閱!

這篇文章主要介紹了深入學習JavaScript的AngularJS框架中指令的使用方法,指令的使用是Angular入門學習中的基礎知識,需要的朋友可以參考下

AngularJS是繼jQuery之后發生在JavaScript上最好的東西。這也是JavaScript開發一直以來想要的方式。Angular主要的優點之一就是它的依賴注入(Dependency Injection),它非常利于代碼的單元測試。但有點小怪異的是,我在無論如何都沒能找到一個介紹如何做單元測試的教程。

當然有很多不錯的推薦:使用Jasmine測試框架和Karma測試執行器(Test Runner);但是并沒有一篇完整的從無到有指導如何測試的教程。所以我寫了這篇文章。我在網上找了很多資源才知道如何去做,而你現在不需要去做這些(如果一開始就看到這篇文章的話)。

請告訴我你看到的任何錯誤,直到我能說這是基于Karma和Jasmine測試Angular應用的最佳實踐。

介紹

這篇文章會引導你安裝使用Karma和Jasmine做自動化測試所需要的所有工具。我不在乎你實在使用TDD(測試驅動開發)還是TAD(測試輔助開發),在這篇文章中,我假設你已經有一個文件需要測試。

安裝Karma

如果你沒有安裝 Node.js,那么請自行下載和安裝。安裝之后,打開終端或命令行輸入一下命令:

npm install -g karma

文件結構

文件結構是跟我們的議題關聯不大,但是在接下來的測試中,我使用的文件結構如下:

Application

| angular.js

| angular-resource.js

| Home

 | home.js

| Tests

 | Home

 | home.tests.js

 | karma.config.js (will be created in the next step)

 | angular-mocks.js

*我并不主張這種文檔結構,我展示它只是為了測試舉例。

配置Karma

切換到你想要放置配置文件的目錄,然后在終端中輸入下面的命令來創建配置文件:

karma init karma.config.js

你會被詢問一些問題,包括你想使用那個測試框架,你是否需要自動監測文件,包含哪些測試和被測試文件等。在我們的教程中,我們保留‘Jasmine'作為我們默認的框架,開啟文件自動監測,并包含下面的文件:

../*.js

../**.*.js

angular-mocks.js

**/*.tests.js

這些都是相對路徑,包含了1)父目錄下的所有.js文件,2)父目錄下的所有子目錄下的所有.js文件,3)當前目錄下的angular-mock.js,4)以及當前目錄(包含子目錄)下所有的.tests.js文件(我喜歡以這樣的方式來區分測試文件和其他的文件)。

不管你選擇了什么文件,請確保你引入了 angular.js,angular-mock.js,以及其他你需要使用的文件。

啟動Karma

現在已經可以啟動Karma了,依然在終端中輸入:

karma start karma.config.js

這個命令會在你的電腦上啟動你在配置文件中列出的瀏覽器。這些瀏覽器都會以socket的方式連接到Karma的實例上,你會看到一組活動的瀏覽器并被告知她們是否在執行測試。我但愿Karma已經告訴你在每個瀏覽器上的最終測試結果總結(比如16個中的15個通過,1個失?。?,遺憾的是你只能通過終端窗口看到這些信息。

Karma的一個很突出的特色是你可以在網絡中使用任何設備連接并測試你的代碼。試一下將你的手機瀏覽器指向Karma服務,你可以在電腦上任何一個運行的瀏覽器上找到這個測試的URL地址。它應該類似于:http://localhost:9876/?id=5359192。你可以將你的手機,虛擬機,或其他任何設備的瀏覽器指向 [你在網絡上的IP地址]:9876/?id=5359192. 因為Karma是在運行一個 Node.js 實例,你的測試機器就像一個web服務器一樣,會將測試發送到任何指向它的瀏覽器。

基本的測試

我們假設你已經有一個文件需要測試。我們要使用到的 home.js 文件如下:

home.js

'use strict';

var app = angular.module('Application', ['ngResource']);

app.factory('UserFactory', function($resource){

 return $resource('Users/users.json')

});

app.controller('MainCtrl', function($scope, UserFactory) {

 $scope.text = 'Hello World!';

 $scope.users = UserFactory.get();

});

我們可以在 home.test.js 文件中創建我們的測試用例。我們從簡單的那個測試開始:$scope.text 應該等于 ‘Hello World!'。 為了完成這個測試,我們需要模擬我們的 Application 模塊以及 $scope 變量。我們會在Jasmine的 beforeEach 方法中做這個工作,這樣的話我們在每個測試用例開始時可以有一個全新的(干凈的)controler和scope對象。

home.tests.js

'use strict';

describe('MainCtrl', function(){

 var scope;

//我們會在測試中使用這個scope

//模擬我們的Application模塊并注入我們自己的依賴

 beforeEach(angular.mock.module('Application'));

//模擬Controller,并且包含 $rootScope 和 $controller

 beforeEach(angular.mock.inject(function($rootScope, $controller){

//創建一個空的 scope

  scope = $rootScope.$new();

//聲明 Controller并且注入已創建的空的 scope

  $controller('MainCtrl', {$scope: scope});

 });

// 測試從這里開始

});

從代碼中你可以看到我們注入了我們自己的 scope,因此我們可以在它的外部驗證它的信息。同時,別忘了模擬模塊本身(第7行代碼)!我們現在已經為測試做好了準備:

home.tests.js

// 測試從這里開始

it('should have variable text = "Hello World!"', function(){

 expect(scope.text).toBe('Hello World!);

});

如果你運行這個測試,它可以在任何指向Karma的瀏覽器中執行,并且測試通過。

發送$resource請求

現在我們已經準備好測試 $resource 請求。要完成這個請求,我們需要使用到 $httpBackend, 它一個模擬版本的Angular $http。我們會創建另一個叫做 $httpBackend 的變量,在第二個 beforEach塊中,注入 _$httpBackend_ 并將新創建的變量指向 _$httpBackend_。接下來我們會告訴 $httpBackend 如何對請求做出響應。

$httpBackend = _$httpBackend_; 

$httpBackend.when('GET', 'Users/users.json').respond([{id: 1, name: 'Bob'}, {id:2, name: 'Jane'}]);

我們的測試: home.tests.js

it('should fetch list of users', function(){

   $httpBackend.flush();

   expect(scope.users.length).toBe(2);

   expect(scope.users[0].name).toBe('Bob');

  });

都放到一起

home.tests.js

'use strict';

describe('MainCtrl', function(){

 var scope, $httpBackend;

//we'll use these in our tests

//mock Application to allow us to inject our own dependencies

 beforeEach(angular.mock.module('Application'));

//mock the controller for the same reason and include $rootScope and $controller

 beforeEach(angular.mock.inject(function($rootScope, $controller, _$httpBackend_){

  $httpBackend = _$httpBackend_;

  $httpBackend.when('GET', 'Users/users.json').respond([{id: 1, name: 'Bob'}, {id:2, name: 'Jane'}]);

//create an empty scope

  scope = $rootScope.$new();

//declare the controller and inject our empty scope

  $controller('MainCtrl', {$scope: scope});

 });

// tests start here

 it('should have variable text = "Hello World!"', function(){

  expect(scope.text).toBe('Hello World!');

 });

 it('should fetch list of users', function(){

  $httpBackend.flush();

  expect(scope.users.length).toBe(2);

  expect(scope.users[0].name).toBe('Bob');

 });

});

技巧

Karma會運行所有文件中的所有測試用例,如果你只想運行所有測試的一個子集,修改 describe 或 it 為 ddescribe 或 iit 來運行個別的一些測試。如果有些測試你不想運行他們,那么修改 describe 或 it 為 xdescribe 或 xit 來忽略這些代碼。

你也可以在html文件的頁面上運行你的測試。舉例的代碼如下:

home.runner.html

<!DOCTYPE html>

<html>

<head>

 <title>Partner Settings Test Suite</title>

<!-- include your script files (notice that the jasmine source files have been added to the project) -->

 <script type="text/javascript" src="../jasmine/jasmine-1.3.1/jasmine.js"></script>

 <script type="text/javascript" src="../jasmine/jasmine-1.3.1/jasmine-html.js"></script>

 <script type="text/javascript" src="../angular-mocks.js"></script>

 <script type="text/javascript" src="home.tests.js"></script>

 <link rel="stylesheet" href="../jasmine/jasmine-1.3.1/jasmine.css"/>

</head>

<body>

<!-- use Jasmine to run and display test results -->

 <script type="text/javascript">

  var jasmineEnv = jasmine.getEnv();

  jasmineEnv.addReporter(new jasmine.HtmlReporter());

  jasmineEnv.execute();

 </script>

</body>

</html>

更多信息請查看網絡編程
由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢為準!

2026上岸·考公考編培訓報班

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
云南網警備案專用圖標
聯系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網
云南網警報警專用圖標
中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
西瓜成人精品人成网站| 国产精品日韩一区二区| 亚洲美女网站| 亚洲高清免费| 激情综合在线| 亚洲精品久久在线| 亚洲精品视频免费| 在线亚洲精品| 久久精品国产91精品亚洲| 免费在线观看精品| 欧美视频一区二区三区四区| 国产日韩欧美精品在线| 亚洲国产精品第一区二区| 亚洲一线二线三线久久久| 久久噜噜亚洲综合| 国产精品一区二区久久久| 亚洲乱码国产乱码精品精天堂| 欧美在线视频观看| 国产精品成人午夜| 一区二区国产日产| 欧美韩日一区| 伊人久久男人天堂| 欧美尤物一区| 国产精品嫩草99av在线| 日韩午夜一区| 欧美成人综合网站| 一区二区三区自拍| 久久国产精品72免费观看| 国产精品三上| 亚洲欧美另类久久久精品2019| 欧美激情一区二区| 最新成人在线| 免费成人网www| 亚洲大片一区二区三区| 久久亚洲二区| 亚洲国产aⅴ天堂久久| 久久亚洲春色中文字幕| 在线免费观看欧美| 久久只有精品| 亚洲国产成人久久综合| 鲁大师成人一区二区三区| 在线看片成人| 欧美日韩亚洲天堂| 亚洲视频久久| 国产精品视频| 久久久999国产| 精品电影一区| 欧美国产视频在线观看| 日韩视频免费大全中文字幕| 欧美日韩大陆在线| 亚洲男人的天堂在线| 国产欧美亚洲一区| 美女视频黄 久久| 亚洲激情成人在线| 欧美日韩视频在线一区二区观看视频| 99在线精品视频| 国产精品乱码| 久久在线免费观看视频| 宅男噜噜噜66一区二区66| 国产日韩在线一区二区三区| 久久精品99无色码中文字幕| 亚洲黄色性网站| 国产精品高潮久久| 久久久噜噜噜久久| 日韩一二三在线视频播| 国产亚洲视频在线| 欧美激情一区二区三区在线 | 99视频有精品| 国产欧美日韩在线| 米奇777在线欧美播放| 亚洲午夜激情在线| 亚洲第一黄色| 国产精品一国产精品k频道56| 美日韩免费视频| 亚洲欧美在线视频观看| 亚洲国产精品第一区二区三区| 国产精品第一区| 欧美高清不卡| 久久乐国产精品| 亚洲主播在线观看| 亚洲精品影视| 亚洲电影免费在线| 国产日产亚洲精品系列| 欧美性大战久久久久久久| 嫩模写真一区二区三区三州| 亚洲欧美日韩在线一区| 亚洲国产一区二区三区青草影视| 国产欧美精品| 欧美视频成人| 欧美激情第六页| 欧美一进一出视频| 在线视频一区观看| 亚洲精品久久久久久久久| 韩国一区电影| 国产精品少妇自拍| 欧美日韩中文| 欧美福利在线观看| 久久精品九九| 欧美亚洲一区二区三区| 一区二区三区精品国产| 日韩一级不卡| 亚洲精品乱码视频| 亚洲国产乱码最新视频 | 亚洲精品123区| 国产一区二区电影在线观看 | 亚洲特色特黄| 亚洲黄色免费| 亚洲人成久久| 亚洲国产精品福利| 在线观看av不卡| 国产又爽又黄的激情精品视频| 国产精品免费观看在线| 欧美日韩在线亚洲一区蜜芽| 欧美黄色aa电影| 欧美高清在线观看| 欧美激情精品久久久久久变态 | 国产一区二区三区丝袜| 国产精品日本一区二区| 国产专区欧美专区| 亚洲第一页在线| 欧美黑人一区二区三区| 久久久美女艺术照精彩视频福利播放 | 乱码第一页成人| 久久最新视频| 久久综合五月天婷婷伊人| 久久久久一本一区二区青青蜜月| 久久精品1区| 久久夜色精品亚洲噜噜国产mv | 国产亚洲激情| 国产一区二区av| 韩国女主播一区二区三区| 国产在线欧美| 亚洲国产精品精华液网站| 亚洲裸体视频| 亚洲一区二区网站| 欧美一区二区三区四区高清| 亚洲影音先锋| 久久久久国产精品人| 免费在线观看精品| 欧美午夜激情视频| 国产婷婷色一区二区三区四区| 国语自产精品视频在线看8查询8| 亚洲国内高清视频| 亚洲一二三区在线观看| 久久精品国产99| 欧美高清在线视频观看不卡| 欧美午夜一区| 影音先锋欧美精品| 亚洲伊人久久综合| 蜜桃av一区二区三区| 欧美亚洲动漫精品| 在线免费精品视频| 亚洲欧美日韩在线高清直播| 老色鬼久久亚洲一区二区| 国产精品高清网站| 在线观看福利一区| 亚洲免费一在线| 欧美a级一区二区| 国产欧美日韩精品丝袜高跟鞋| 亚洲国产mv| 午夜精品国产精品大乳美女| 欧美成人一品| 韩国成人精品a∨在线观看| 一本大道久久a久久综合婷婷| 久久精品女人天堂| 国产精品二区在线| 在线播放中文一区| 久久久久久久欧美精品| 国产精品久久一卡二卡| 亚洲蜜桃精久久久久久久 | 国产一区二区看久久| 99精品视频免费观看| 男人的天堂亚洲| 国产日韩一区二区三区| 一本一本久久a久久精品综合麻豆 一本一本久久a久久精品牛牛影视 | 欧美激情中文不卡| 国产一区二区三区免费不卡| 一区二区三区国产精品| 欧美+亚洲+精品+三区| 1024成人网色www| 欧美在线免费视频| 国产精品欧美经典| 亚洲一区二区三| 欧美视频日韩视频| 99视频热这里只有精品免费| 欧美精品乱人伦久久久久久| 亚洲国内在线| 欧美精品亚洲| 日韩午夜剧场| 欧美日韩国产在线看| 亚洲伦理在线观看| 欧美电影免费观看| 亚洲精品极品| 欧美啪啪一区| 中文国产一区| 国产精品久久久久久久电影 | 亚洲国产综合91精品麻豆| 久久一区精品| 狠狠色丁香婷婷综合| 久热精品视频在线观看一区|