现在我要测试一个异步的方法,就是方法不会立即返回值,它需要一段时间去处理,处理好以后会把数据交给它的回调函数。比如我要创建一个方法,它会在两秒以后返回数据 ..
添加一个测试 ... 在 describe 里面, 使用一个 it 方法 .. 描述一下这个测试 .. 在它的函数参数里添加要测试的东西 ... 使用一个 demo 的 waitTwoSecond ,它就是我们一会儿要创建的方法 .. 它的第一个参数是数据 .. 第二个参数是一个回调函数 .. 函数有一个参数 .. 就是处理好的数据 ..
在这个回调函数里面,用一个 expect , 检查的是 data 的值 .. 看看它是不是等于传递给 waitTwoSecond 方法的数据参数的值 ..
运行一下测试 ... 刚才写的测试会失败 .. 原因是 demo.waitTwoSecond is not a function ,因为我们还没有定义这个方法..
打开 NinghaoDemo 这个类 .. 添加一个方法 .. 名字是 waitTwoSecond .. 第一个参数是 data ,第二个参数是一个回调函数 ..
它里面使用一下 setTimeout .. 在两秒钟以后,执行一下 waitTwoSecond 的回调函数,把 data 交给这个函数 ..
运行一下测试 .. 测试会通过 .. 回到测试 .. 修改一下期望的这个值 .. 让它等于 您好 ... 再执行一下测试 .. 也会通过 ..
这是因为,waitTwoSecond 是一个异步的方法,mocha 不会等方法执行完,再去检查结果 .. 想让它等一下的话,可以在这个测试里,添加一个要执行的方法 .. 一般名字是 done ...
然后在这个异步的方法里,完成以后,再执行一下这个 done() 函数 ..
再运行一下测试 .. 这次会出现一个 timeout ,超时的错误,默认 mocha 只会等待两秒钟,超过这个时间,mocha 就认为测试失败了 .. 想让它多等一下,可以再添加一个设置 ..
在这个 describe 里面,添加一个 this.timeout(5000); 意思就是告诉 mocha ,超时的时间是 5 秒钟 ...
执行一下测试 .. 这次会出现一个 AssertionError .. 期望的数据的值应该是 hello,而不是您好 .. 修改一下 equal 里面的值, data 应该等于 hello ...
再去运行一下测试 ...
这次测试就会通过了 ...