即使在 AVA 单元测试中选择退出,Mixpanel 也会返回一个响应对象而不是未定义的
Mixpanel returning a response object instead of undefined even when opted out in AVA Unit Test
我正在尝试为我的混合面板实施实施 AVA 单元测试。为此,我正在比较 mixpanel.track() 的结果,如果它 returns 任何东西,则轨道成功,否则,它应该是未定义的。
我想也许是因为它使用了不同的混合面板实例,所以我尝试创建一个命名实例并确保这一点,但它无济于事。我也在尝试相同的过程,但使用 Amplitude,它似乎工作正常(当我选择退出时,响应按预期失败)
我已经在我的组件中这样做了,如果
const test = mixpanel.track('event_name', {})
成功,!!test === true 但如果我在 const test = mixpanel.track('event_name', {})
之前执行 mixpanel.opt_out.tracking()
,那么 !!test === 未定义。
预期行为(以及在我的组件中使用它时观察到的行为):
trackResponse === undefined
观察到的行为:
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
中的 属性 并进行比较看看它是不是 === to '0'
。如果失败,它会假定用户没有选择退出并正常执行 track
调用。
我猜想在 AVA 测试期间,它无法访问这个 属性 并假设用户没有选择退出。为了修复它,在我对 mixpanel.init()
的调用中,我添加了 opt_out_tracking_persistence_type: 'cookie'
作为一个选项,以便我的 opt_out
调用被保存在测试期间可以访问 属性 的某个地方.
我正在尝试为我的混合面板实施实施 AVA 单元测试。为此,我正在比较 mixpanel.track() 的结果,如果它 returns 任何东西,则轨道成功,否则,它应该是未定义的。
我想也许是因为它使用了不同的混合面板实例,所以我尝试创建一个命名实例并确保这一点,但它无济于事。我也在尝试相同的过程,但使用 Amplitude,它似乎工作正常(当我选择退出时,响应按预期失败)
我已经在我的组件中这样做了,如果
const test = mixpanel.track('event_name', {})
成功,!!test === true 但如果我在 const test = mixpanel.track('event_name', {})
之前执行 mixpanel.opt_out.tracking()
,那么 !!test === 未定义。
预期行为(以及在我的组件中使用它时观察到的行为):
trackResponse === undefined
观察到的行为:
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
中的 属性 并进行比较看看它是不是 === to '0'
。如果失败,它会假定用户没有选择退出并正常执行 track
调用。
我猜想在 AVA 测试期间,它无法访问这个 属性 并假设用户没有选择退出。为了修复它,在我对 mixpanel.init()
的调用中,我添加了 opt_out_tracking_persistence_type: 'cookie'
作为一个选项,以便我的 opt_out
调用被保存在测试期间可以访问 属性 的某个地方.