gpt4 book ai didi

angularjs - Angular JS-Jasmine 如何对 $location.path().search() 进行单元测试?

转载 作者:行者123 更新时间:2023-12-01 10:42:11 25 4
gpt4 key购买 nike

一直在谷歌搜索,但找不到我这个小问题的答案。只是想从我的 Controller 测试这段代码:

$scope.viewClientAssets = (id) -> 
$location.path("/assets").search("client_id", "#{id}")

然后返回这个 url:

http://localhost:3000/admin#/assets?client_id=19

这一切都很好,但是在单元测试时......一些假设:我已经正确设置了我的规范,因为我有其他测试和期望工作得很好所以这里是测试:

it 'checks if view client assets path is correct', ->
createController()
#gets rid of unnecessary function calls
flushRequests()
#calls the ctrl function with necessary args
$scope.viewClientAssets(clientData.client.id)
spyOn($location, 'path')
spyOn($location, 'search') #tried diff methods here such as
# and.returnValue(), .calls.any(), calls.all()
expect($location.path).toHaveBeenCalledWith("/assets")
expect($location.path.search).toHaveBeenCalled()

所有其他测试都通过了,但是当它被击中时,我得到以下错误:

TypeError: Cannot read property 'search' of undefined

控制台调试器告诉我:

$scope.createClientAsset = function(id) {
return $location.path('/assets/create').search("client_id", "" + id);
};

那个路径是未定义的?

有什么想法吗?

最佳答案

要测试 spyOn 的搜索功能,请执行以下操作

spyOn($location, 'path').and.callThrough();
spyOn($location, 'search');

这将正确返回值。

关于angularjs - Angular JS-Jasmine 如何对 $location.path().search() 进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29430841/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com