小编Ant*_*ina的帖子

你会如何在Alert中模拟'onPress'?

我能够模拟警报以测试它的警报方法正在被调用,但我真正想要测试的是按下警报中的确定按钮.

import { Alert } from 'react-native';

it('Mocking Alert', () => {
    jest.mock('Alert', () => {
        return {
          alert: jest.fn()
          }
        };
      });

    const spy = jest.spyOn(Alert, 'alert');
    const wrapper = shallow(<Search />);

    wrapper.findWhere(n => n.props().title == 'Submit').simulate('Press');
    expect(spy).toHaveBeenCalled(); //passes
})
Run Code Online (Sandbox Code Playgroud)

我绝对不确定如何测试它.这是我试图测试的通用组件.

export default class Search extends Component{

    state = {
      someState: false
    }

    confirmSubmit(){
      this.setState(state => ({someState: !state.someState}))
    }

    onPress = () => {
      Alert.alert(
        'Confirm',
        'Are you sure?'
        [{text: 'Ok', onPress: this.confirmSubmit}] //<-- want to test this
      ) …
Run Code Online (Sandbox Code Playgroud)

javascript unit-testing jestjs react-native enzyme

12
推荐指数
2
解决办法
3980
查看次数

Google Places API获取详细信息 - 无效请求

所以我试图根据谷歌文本搜索获取详细信息.我的文本搜索工作正常,但为了获取详细信息,我不断收到"无效请求".

我已经按照文档中的例子,以及其他人的例子,但无济于事,我失败了....

这是我的文本搜索,它正在运行.

var lat = '43.09182244507046'
var lng = '-89.48985488807972'
var places;
    function initialize() {


        var location = new google.maps.LatLng(lat,lng);

        var map = new google.maps.Map(document.getElementById('map'),{
            center: location,
            zoom: 15
        });

        var request = {
            location: location,
            radius: '50000',
            query: 'food'
        };

        var callback = function (results, status) {
                places = results;
              console.log(status);
              console.log(places);
        }

        var service = new google.maps.places.PlacesService(map);
        service.textSearch(request, callback);

    }
Run Code Online (Sandbox Code Playgroud)

这是我的地方详细信息搜索,它获得了无效的请求状态

var place_details;
        function getDetails() {

            var location = new google.maps.LatLng(lat,lng);

            var map = new google.maps.Map(document.getElementById('map'),{
                center: …
Run Code Online (Sandbox Code Playgroud)

javascript google-places-api

5
推荐指数
1
解决办法
2118
查看次数

在 Ionic 中为外部 API 处理重定向 Uri

所以我已经构建了一个 web 应用程序,并在 Ionic 中制作了一个相应的移动应用程序。我想制作一个渐进式网络应用程序,因为它会让我的生活更轻松,但我想 Apple 还不支持这个。

(ps我对这个东西很陌生)

所以我使用 id.me api 来验证军事服务,它在重定向 uri 中发回一个访问令牌以发出 api 请求。

有两种方法可以做到这一点,通过我的服务器或通过客户端。

这是他们的网络流 https://developer.id.me/documentation#oauth-overview

这就是我迷路的地方 Ionic ....

因此,要启动 webflow,我必须将用户发送到 id.me 的授权端点,我将在 inappbrowser 中执行此操作

https://api.id.me/oauth/authorize?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=token&scope=SCOPE
Run Code Online (Sandbox Code Playgroud)

id.me 在重定向时发回访问令牌...

从那里,我可以获取令牌,将其保存到本地存储并关闭 inAppBrowser。我不知道在哪里设置uri?是本地主机吗?当您在您的平台上构建 Ionic 时,是否在本地服务器上运行?

我会做这样的事情吗?

angular.module('myApp', ['ionic', 'ngCordova']).controller('AppCtrl', 

function($rootScope, $ionicPlatform, $cordovaInAppBrowser) {
    var callback = 'http://localhost:8100/callback';
    $scope.idAuth = function() {
      $ionicPlatform.ready(function() {
        var options = {
          location: 'yes',
          clearcache: 'no',
          toolbar: 'yes'
        };
        $cordovaInAppBrowser.open('https://api.id.me/oauth/authorize?client_id=CLIENT-ID&redirect_uri=callback&response_type=token&scope=SCOPE', '_blank', options)
      });
    };


    $rootScope.$on('$cordovaInAppBrowser:loadstart', function(e, event) {
      //and this function is called, so you …
Run Code Online (Sandbox Code Playgroud)

javascript angularjs cordova ionic-framework

4
推荐指数
1
解决办法
2965
查看次数