Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用回调参数的测试方法_Javascript_Jasmine - Fatal编程技术网

Javascript 使用回调参数的测试方法

Javascript 使用回调参数的测试方法,javascript,jasmine,Javascript,Jasmine,我有一个方法,它被传递一个回调参数,这样当方法中的一些数据被设置时,它将调用回调函数 该方法如下所示: myService.updateData(回调),当我调用它时,myService.updateData(函数(){//do things after data have set}) 在Jasmine测试中,我如何测试执行回调时会发生的事情 有可能像这样做吗 spyOn(myService,'updateData')。和.callFake(function(){}) 谢谢您是在测试myServ

我有一个方法,它被传递一个回调参数,这样当方法中的一些数据被设置时,它将调用回调函数

该方法如下所示:
myService.updateData(回调),当我调用它时,
myService.updateData(函数(){//do things after data have set})

在Jasmine测试中,我如何测试执行回调时会发生的事情

有可能像这样做吗

spyOn(myService,'updateData')。和.callFake(function(){})


谢谢

您是在测试myService.updateData还是回叫本身?如果是前者,那么回调会有什么实际影响?你可以通过加入一些伪函数来忽略它吗?例如,没有操作或只是返回一个常量结果吗?@vlaz,我正在尝试测试回调本身。当
updateData
方法中的某些数据被设置时,回调会通知我。但是现在想想,如果我只是在组件上预先设置数据会怎么样。类似于,
component.data=[]
。那么我就可以把我的断言做对了?这就是我的想法-如果你在测试中并不关心回调,那么用一个伪回调替换它,只关注手头的函数。@vlaz如果我想执行回调并测试回调内部发生了什么呢?那么这是一个单独的测试。您将在类似
myCallback=function()。然后为
myCallback
函数编写一个测试。记住,在单元测试中,一次只关注一件事情是很重要的。这使得我们很容易找出哪里出了问题。如果您同时测试
updateData
和回调函数,则其中任何一个函数的问题都会导致测试失败,因此您需要同时调查这两个函数。