Jasmine 为 JavaScript 提供了 TDD (测试驱动开发)的框架,对于前端软件开发提供了良好的质量保证,这里对 Jasmine 的配置和使用做一个说明。目前,Jasmine 的最新版本是 2.3 版,这里以 2.3 版进行说明。网上已经有一些关于 Jasmine 的资料,但是,有些资料比较久远,已经与现有版本不一致。所以,这里特别以最新版进行说明。1. 下载官网地址:http://jasmine.github.io/官网文档地址:http://jasmine.github.io/2.3/introducti...
1,下载Jasmine 包,主要包括如下三个文件:1>,jasmine-html.js,jasmine.css,jasmine.js2>,编写测试用例,代码如下:describe("Examples of Jasmine suite", function() {//List 1describe("This is an exmaple suite", function() {it("contains spec with an expectation", function() {expect(true).toBe(true);expect(false).toBe(false);expect(false).not.toBe(true);});});//List 2describe("Test suite is a function.", fun...
1.Karma介绍 Karma是Testacular的新名字,在2012年google开源了Testacular,2013年Testacular改名为Karma。Karma是一个让人感到非常神秘的名字,表示佛教中的缘分,因果报应,比Cassandra这种名字更让人猜不透! Karma是一个基于Node.js的JavaScript测试执行过程管理工具(Test Runner)。该工具可用于测试所有主流Web浏览器,也可集成到CI(Continuous integration)工具,也可和其他代码编辑器一起使用。这个测试工具的一个强大特...
1.Karma介绍 Karma是Testacular的新名字,在2012年google开源了Testacular,2013年Testacular改名为Karma。Karma是一个让人感到非常神秘的名字,表示佛教中的缘分,因果报应,比Cassandra这种名字更让人猜不透! Karma是一个基于Node.js的JavaScript测试执行过程管理工具(Test Runner)。该工具可用于测试所有主流Web浏览器,也可集成到CI(Continuous integration)工具,也可和其他代码编辑器一起使用。这个测试工具的一个强大特...
我正在尝试通过使用茉莉花数据提供程序来实现项目中的数据驱动测试. 我有一个如下的data.ts文件export const hardshipTestData = {scenarios: {scenario1: {isHome: 'Yes'},scenario2: {isHome: 'No'}} };我正在使用规范文件中的上述数据import { using } from 'jasmine-data-provider'; import { hardshipTestData } from '../../data/testdata';using(hardshipTestData.scenarios, function (data, description) {it('testing da...
我在名为ctrl.test的范围变量中的控制器中定义了$scope.$watch. $watch的回调函数在生产部署中使用正确的值(newVal)进行调用,但是当从Jasmine测试中调用时,将使用undefined进行调用.直接访问ctrl.test确实会产生正确的值. 有人能对此有所启发吗?这是一个Plunk用来摆弄.解决方法:当使用Controller As模式时,请使用函数作为watch表达式. 更换:$scope.$watch('ctrl.test', ...带有:$scope.$watch(function () {return ctrl.test; }...
我正在尝试为具有$rootScope.$on(‘accountsSet’,function(event)….的控制器编写一个测试….因此,在测试中,我使用的是.broadcast.andCallThrough(),这里还有许多其他问题在SO建议虽然它也对我有用. 所以我的控制器非常简单: angular.module(‘controller.sidemenu’,[]).controller('SidemenuCtrl', function($rootScope, $scope, AccountsService) {$rootScope.$on('accountsSet', function (event) {$scope.accounts = Accoun...
我在要使用“&”的指令行中收到SyntaxError:解析错误.与父指令的方法进行单向绑定myApp.directive('datasourceDeleteBtn', [function() { return {restrict: 'E',replace: true,template: '<a href="#">✕</a>',scope: {datasourceIndex: '@',removeParentDiv: '&'},link: link };function link(scope, element, attr) {element.bind('click', function(event) {event.preventDefault();scope.deleteDatasource(scope.dataso...
在Jasmine单元测试中使用andCallFake函数时,出现此错误:TypeError: jasmine.createSpy(…).andCallFake is not a function可能缺少什么?解决方法:它应该是spyOn(target, 'method').and.callFake(...); jasmine.createSpy().and.callFake(...); // alternatively和和callFake之间有一个点.如documentation州 问候
我已经尝试了一段时间来测试js和dom元素,最后遇到了有助于测试dom元素的业力.但是到目前为止,我所拥有的一切都不起作用.任何帮助将不胜感激.我一直在使用本教程:http://www.bradoncode.com/blog/2015/02/27/karma-tutorial/,但无法正常使用. js:window.calculator = window.calculator || {};(function() {var result;var adding = function(one, two) {var one1 = document.forms["myForm"]["one"].value;var two2 = document.f...
我试图将Jasmine.js测试与require一起使用. 这是我的specRunner的一部分<script type="text/javascript" src="<?php echo $rootRequirejs?>/require.js"></script> <script type="text/javascript">require.config({baseUrl: "./"}); </script>这是我的规格文件的一部分define([], function () {});当我运行specRunner时,出现以下错误,为什么?Uncaught Error: Mismatched anonymous define() module: function () {} http://requi...
我正在准备使用量角器和茉莉花进行E2E测试的套件.目前,我正在使用Node从命令行运行它们.过去,我将Jasmine测试与SpecRunner.html设置一起使用,该设置在运行时在浏览器中显示结果,允许您选择要运行的单个测试或测试的子套件,等等. 有没有人以这种方式设置Jasmine Protractor测试-输出进入一个浏览器窗口,而测试则在另一个浏览器窗口中运行? 另外,即使我仍然必须从命令行运行测试,是否有Jasmine报告程序将提供类似的输出格式?解决方...
是否可以调用$httpbackend.flush();?仅当有一些待处理的请求时?所以我永远不会Error: Unflushed requests: 1,2,3,…,n要么Error: No pending request to flush !解决方法:根据documentation,您可以使用$http.pendingRequests属性.这样的事情会起作用:if($http.pendingRequests.length > 0) {$httpBackend.flush(); }我不确定这是个好主意,但是应该可以.
我正在测试一个回调函数,该函数接受一个响应对象作为唯一参数.该对象是在其他地方发出的HTTP请求的响应,因此我不想在此测试中使用$httpBackend,因为该请求与该功能无关. 在home.js中,它是我应用程序主页的控制器. 这是正在测试的功能:function submitLogin() {LoginService.login(loginPost, ctrl.username, ctrl.password, successCallback, errorCallback);}// gets called in LoginService if login reponse is 201, otherwise...
我无法让我的单元测试正常工作.我有一个$scope数组,它开始是空的,但应该用$http.get()填充.在真实的环境中,阵列中大约有15个左右的对象,但是对于我的单元测试,我只抓了2.对于单元测试,我有:expect($scope.stuff.length).toBe(2);但茉莉的错误是:预期0为2. 这是我的controller.js:$scope.stuff = []; $scope.getStuff = function () {var url = site.root + 'api/stuff';$http.get(url).success(function (data) {$scope.stuff =...