Javascript Mixpanel返回响应对象而不是未定义的对象,即使在AVA单元测试中选择了out
我正在尝试为我的mixpanel实现实现一个AVA单元测试。为此,我将比较mixpanel.track()的结果,如果它返回任何结果,则表示该轨迹成功,否则,它应该是未定义的 我想可能是因为它使用了一个不同的mixpanel实例,所以我尝试创建一个命名实例,并确保这一点,但没有效果。我也在尝试同样的过程,但幅度很大,似乎效果很好(当我选择退出时,响应会如预期的那样失败) 我已经在我的组件中这样做了,如果Javascript Mixpanel返回响应对象而不是未定义的对象,即使在AVA单元测试中选择了out,javascript,mixpanel,Javascript,Mixpanel,我正在尝试为我的mixpanel实现实现一个AVA单元测试。为此,我将比较mixpanel.track()的结果,如果它返回任何结果,则表示该轨迹成功,否则,它应该是未定义的 我想可能是因为它使用了一个不同的mixpanel实例,所以我尝试创建一个命名实例,并确保这一点,但没有效果。我也在尝试同样的过程,但幅度很大,似乎效果很好(当我选择退出时,响应会如预期的那样失败) 我已经在我的组件中这样做了,如果 const test=mixpanel.track('event_name',{})成功!!
const test=mixpanel.track('event_name',{})
成功!!test==true,但是如果我在const test=mixpanel.track('event\u name',{})
之前执行了mixpanel.opt\u out.tracking()
,那么!!测试===未定义
预期行为(以及在组件中使用时观察到的行为):
观察到的行为:
trackResponse === { event: 'asdf',
properties:
{ '$browser': 'Safari',
'$current_url': 'about:blank',
'$browser_version': null,
'$screen_height': 0,
'$screen_width': 0,
mp_lib: 'web',
'$lib_version': '2.30.1',
time: 1572898982.142,
distinct_id: '[some_id]',
'$device_id': '[some_id]',
'$initial_referrer': '$direct',
'$initial_referring_domain': '$direct',
token: '[token]' } }
其中,[some_id]和[token]是我删除的一些不同的值
我不明白为什么在AVA测试中,当一个失败的track()
导致一个未定义的响应时,我会收到一个响应。有人能帮我照一下吗
如果我需要提供任何其他信息,请告诉我。谢谢。我想出来了,以防其他人遇到这个问题 我使用调试器进入
mixpanel.track()
调用,发现为了查看用户是否选择了退出,mixpanel检查localStorage
中的一个属性,并比较它是否==到“0”
。如果失败,则假定用户未选择退出,并按正常方式执行track
调用
我猜在AVA测试期间,它无法访问此属性,并且假设用户没有选择退出。为了解决这个问题,在调用mixpanel.init()
时,我添加了opt\u-out\u-tracking\u-persistence\u-type:“cookie”
作为一个选项,以便我的opt\u-out
调用被保存在某个可以在测试期间访问属性的地方
trackResponse === { event: 'asdf',
properties:
{ '$browser': 'Safari',
'$current_url': 'about:blank',
'$browser_version': null,
'$screen_height': 0,
'$screen_width': 0,
mp_lib: 'web',
'$lib_version': '2.30.1',
time: 1572898982.142,
distinct_id: '[some_id]',
'$device_id': '[some_id]',
'$initial_referrer': '$direct',
'$initial_referring_domain': '$direct',
token: '[token]' } }