JavaScript   发布时间:2022-04-16  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了javascript – 如何从茉莉花中的geolocator伪造回电话大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个函数调用geolocator,我不知道如何测试这个功能.我已经尝试间谍地理位置并返回假数据,但没有成功,原来的功能仍然使用,所以我必须等待,我不能使用模拟数据.
// this doesn't work        
var navigator_spy = spyOn( navigator.geoLOCATIOn,'getCurrentPosition' ).andReturn( {
    coords : {
        latitude : 63,longitude : 143
    }
} );

我该怎么做?

解决方法

当你调用地理位置代码时,它@R_197_7957@:
navigator.geoLOCATIOn.getCurrentPosition(onsuccess,onError);

这意味着你正在调用它并传递它的功能:

function onsuccess(position) {
      // do something with the coordinates returned
      var myLat = position.coords.latitude;
      var myLon = position.coords.longitude;
  }

  function onError(error) {
      // do something when an error occurs
  }

所以,如果你想使用茉莉花返回一个值来监视它,你可以使用原始调用的第一个参数调用成功函数,如下所示:

spyOn(navigator.geoLOCATIOn,"getCurrentPosition").andCallFake(function() {
         var position = { coords: { latitude: 32,longitude: -96 } };
         arguments[0](position);
  });

如果你想让它看起来像一个错误返回,你想使用原始调用的第二个参数调用错误函数,"getCurrentPosition").andCallFake(function() { arguments[1](error); });

编辑显示完整示例:

这是您使用Jasmine测试的功能:

function GetZipcodeFromGeoLOCATIOn(onsuccess,onError) {
        navigator.geoLOCATIOn.getCurrentPosition(function(position) {
              // do something with the position info like call
              // an web service with an ajax call to get data
              var zipcode = CallWebserviceWithPosition(position);
              onsuccess(zipcodE);
        },function(error) {
              onError(error);
        });
  }

这将在你的spec文件中:

describe("Get Zipcode From GeoLOCATIOn",function() {
        it("should execute the onsuccess function with valid data",function() {
              var jasminesuccess = jasmine.createSpy();
              var jasmineError = jasmine.createSpy();

              spyOn(navigator.geoLOCATIOn,"getCurrentPosition").andCallFake(function() {
                     var position = { coords: { latitude: 32.8569,longitude: -96.9628 } };
                     arguments[0](position);
              });

              GetZipcodeFromGeoLOCATIOn(jasminesuccess,jasmineError);

              waitsFor(jasminesuccess.callCount > 0);

              runs(function() {
                    expect(jasminesuccess).wasCalledWith('75038');
              });
        });
  });

在这一点上,当您运行规范时,如果您的Web服务正常工作,它会告诉您,您的Web服务为您提供的纬度和经度提供了正确的邮政编码.

大佬总结

以上是大佬教程为你收集整理的javascript – 如何从茉莉花中的geolocator伪造回电话全部内容,希望文章能够帮你解决javascript – 如何从茉莉花中的geolocator伪造回电话所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。