也许我没有清楚地看到它,但我想知道:
如何模拟和测试
$window
变量?
我在以下函数中使用$window
:
vm.showCampaignDetails = function(campaignId) {
vm.someFunction({ position:$window.pageYOffset });
$state.go('campaignDetails', { campaignId: campaignId });
};
我在视图中点击了ng-click来调用showCampaignDetails:
<button ng-click"vm.showCampaignDetails(campaignID)">Details</button>
现在我想对这个功能进行单元测试。但不管我做什么,我 无法模仿
$window.pageYOffset
的价值。
我试图通过该功能传递它,但这似乎很愚蠢。
那么,方法怎么样?
这是我的测试:
it('should navigate to campaign details and save the scrolling position', function () {
spyOn(vm, 'someFunction');
spyOn($state, 'go');
$window.pageYOffset = 1998;
vm.showCampaignDetails(13);
expect(vm.someFunction).toHaveBeenCalledWith({ position: 1998 });
expect($state.go).toHaveBeenCalledWith('campaignDetails', { campaignId: 13});
});
答案 0 :(得分:4)
你可以模拟$ window依赖:
var windowMock = { pageYOffset: 0 };
beforeEach(module(function($provide) {
$provide.value('$window', windowMock);
}));