茉莉什么时候重置间谍?

问题描述 投票:0回答:1

我找到了这段代码:

describe('Test', function() {
  const NAVIGATOR = window.navigator;

  beforeEach(function() {
    spyOnProperty(window.navigator, 'userAgent').and.returnValue('Mozilla');
  })

  afterEach(function() {
    window.navigator = NAVIGATOR;
  });
}

为什么需要

afterEach
中的代码?据我所知,Jasmine 在每个规范之后都会重置被监视的函数,并再次正常实现。查看文档也证实了这一点。那么为什么需要这个呢?这里有什么特别的吗?

angular testing mocking ng-mocks
1个回答
0
投票

你是对的,但是

Jasmine
会在每次测试运行后自动恢复监视功能。所以这里的
afterEach
休息可能是多余的并且不需要。

关键是

spyOnProperty
正在监视
userAgent
对象的
navigator
属性。它不会替换整个
navigator
对象。

所以每次测试后,

userAgent
属性都会自动恢复到原来的值。

无需将整个

navigatore
对象重置回原始
NAVIGATOR
const。

有几件事可以解释为什么它在那里:

  • 可能错误地认为 Jasmine 不会重置间谍属性。所以为了安全起见,手动重置它。
  • 所使用的测试框架/环境可能存在一些特定问题或边缘情况,需要手动重置导航器。
  • 它是从其他地方复制粘贴的,不知道是否需要它。

但一般来说,使用

Jasmine
,您不需要手动重置
afterEach
中的间谍属性或函数。它们将被自动处理。

所以在这种情况下,

afterEach
重置
navigator
可能是多余的,可以删除。每次测试后,监视的
userAgent
属性将自行正确恢复。


我希望这对你有帮助。干杯🥂

© www.soinside.com 2019 - 2024. All rights reserved.