我找到了这段代码:
describe('Test', function() {
const NAVIGATOR = window.navigator;
beforeEach(function() {
spyOnProperty(window.navigator, 'userAgent').and.returnValue('Mozilla');
})
afterEach(function() {
window.navigator = NAVIGATOR;
});
}
为什么需要
afterEach
中的代码?据我所知,Jasmine 在每个规范之后都会重置被监视的函数,并再次正常实现。查看文档也证实了这一点。那么为什么需要这个呢?这里有什么特别的吗?
你是对的,但是
Jasmine
会在每次测试运行后自动恢复监视功能。所以这里的 afterEach
休息可能是多余的并且不需要。
关键是
spyOnProperty
正在监视 userAgent
对象的 navigator
属性。它不会替换整个 navigator
对象。
所以每次测试后,
userAgent
属性都会自动恢复到原来的值。
无需将整个
navigatore
对象重置回原始 NAVIGATOR
const。
有几件事可以解释为什么它在那里:
但一般来说,使用
Jasmine
,您不需要手动重置 afterEach
中的间谍属性或函数。它们将被自动处理。
所以在这种情况下,
afterEach
重置navigator
可能是多余的,可以删除。每次测试后,监视的 userAgent
属性将自行正确恢复。
我希望这对你有帮助。干杯🥂