jasmine.any引用构造函数或者类名作为期望值,和真是的构造函数匹配时返回true
jasmine的Mock Clock是一款有效的测试组件,有能力使用setTimeout或者setInterval回调函数。它使timer回调函数同步,使它们更容易测试
通过在spec或者suite里调用jasmine.Clock.useMock来安装Mock clock。
通过jasmine.Clock.tick方法来标记clock以触发注册的回调函数,这个方法传一个milliseconds.
上面这段话来自对官网的翻译,一些地方不好理解,笔者对下图程序做进一步解释,setTimeout(function() { timerCallback(); }, 100);是一个回调函数,隔100milliseconds调用timerCallback()一次。jasmine.Clock.tick(101)为等待101milliseconds,所以第一次判断timerCallback是否为调用时为未调用,第二次则已调用。而setInterval(function() { timerCallback(); }, 100)则是每隔100milliseconds调用timerCallback()一次,这样解释不难理解了,第一次判断调用前等待101milliseconds,所以调用次数为1,第二次判断调用前又等待50milliseconds,总等待时间为151milliseconds<200milliseconds,所以仍是调用一次,再等待50milliseconds后总等待时间>200milliseconds,所以第三次判断调用次数为2
Jasmine支持测试异步操作,通过调用runs定义的一组blocks写入specs,bolcks通常结束于异步调用。waitsFor block需要一个锁方法,一个失败消息,和一个超时时间。锁方法一直轮询直到返回true或者超时。如果超时,spec输出失败信息。一旦异步状况出现,另一个runs block定义终的测试行为,它期望值通常基于异步调用返回的状态。如下图,起初flag为false,waitsFor一直轮询,直到500 milliseconds后触发setTimeout的function,将flag赋为true后waitsFor在超时时间未到之前结束,waitsFor下面那个runs是测试行为,笔者看了下value的值为30+。
Jasmine是构建在javaScript之上的,必须包含在一个JS的环境中,如一个web页面,这样才能运行。
jasmine的测试文件用javaScript编写,通过Rocoo被编译进html(Rocoo这里不做介绍,有兴趣的可以自行里了解)。通过