jasmine是js的一个测试框架,本文就主要讲解最简单的jasmine。首先先来一个最简单的测试用例:框架
describe("calculate", function() { it("should be able to return the sum", function() { expect(calculate.count(2,3).toEqual(5); });
首先呢,jasmine测试框架是以describe开头,接受两个参数,一个是字符串,一个是函数。字符串是用来描述你正在测试的内容(这里就是要测试的是calculate类,下面有不少的方法,我这里只测试了计算两个数的和),函数就是你要测试的代码函数,里面的it函数也是接受两个参数,一个是字符串,一个是函数,字符串也是用来描述这个测试案例具体正在测试的功能,expect就是指望值,当这个指望值为真的时候,测试就算是经过了。dom
expect里面提供了不少种方法,例如这里的toEqual就是判断两个对象是否相等,还有toBe , toBeDefined等等不少方法。再看一个简单的测试用例:函数
describe("示例", function() { var a; beforeEach(function() { a = 0; a += 1; }); afterEach(function(){ a = 0; }); it("测试", function() { expect(a).toEqual(1); }); });
jasmine还提供了beforeEach和afterEach函数,按照字面上的意思来讲,beforeEach是在describe里面的全部小测试(也就是it)以前执行(好比说你要在后面不少个的it里面都使用到某一个变量或者其余,就能够在beforeEach里面写),而afterEach显然是全部测试以后执行(测试完了须要干什么,就能够写在afterEach里面)。固然了,这两个函数不必定必须。再看一个简单的测试用例:学习
describe("guess_number",function(){ var answer; var game; beforeEach(function () { answer = new AnswerGenerator(); spyOn(answer,'generate_random_number').and.returnValue('1234'); game = new Guess(answer); }); it("guess right should be able to return 4A0B!", function () { expect(game.guess_answer('1234')).toEqual(true); }); } );
这个是测试一个game类,用来判断输入的数字与随机生成的数字是否相等。测试
看到spyOn了吗?,这也是jasmine里面的,我在学习这个的时候师兄们告诉我说的是这个能够使得你的函数是可控的,好比这里的随机数的生成,返回值是不可控的,就能够经过spyOn使得返回值可控。(白话文说就是assume某个变量或者函数是可控的),相应的有针对spy这个的测试的两个函数,toHaveBeenCalled用来测试你spy这个函数是否被调用了,toHaveBeenCalledWith用来测试调用时的参数,匹配的话返回true。例如:spa
expect(answer.generate_random_numbe).toHaveBeenCalled();
用来测试generate_random_number这个函数是否被调用了。code
小节:jasmine写测试的时候只要记住describe(分组),it(单个用例),expect(指望),什么匹配函数什么的,首先是写decrible而后在里面写it,expect 里面还能够嵌套describe,测试主要是为了查看咱们的代码有没有按照咱们须要的那样去执行。对象