2015-10-02 15 views
6

एंड्रॉइड 6.0 और नए अनुमति मॉडल के साथ, मैं जांच कर रहा हूं कि कुछ कार्य करने से पहले अनुमति मौजूद है या नहीं।एंड्रॉइड में परीक्षण के लिए अनुमतियों का नकल कैसे करें?

मैं इन अनुमतियों को उपलब्ध कराने के लिए असाइन करना चाहता हूं और परीक्षण उद्देश्य के लिए उपलब्ध नहीं हूं। स्ट्रिंग के आधार पर विभिन्न अनुमतियों की जांच करने के लिए मेरे पास एक स्थिर वर्ग है।

boolean result = ContextCompat.checkSelfPermission(context, name) == PackageManager.PERMISSION_GRANTED; 

क्या यह मॉकिटो या रोबोइलेक्ट्रिक का उपयोग करके हासिल किया जा सकता है?

+2

रोबोलेक्ट्रिक केवल एपीआई 21 के साथ संगत है। वे अभी एपीआई 23 के साथ काम कर रहे हैं –

उत्तर

3

यदि आप अपनी अनुमति परीक्षक को एक सहयोगी वर्ग में ले जाते हैं, तो आप सहयोगी का मज़ाक उड़ा सकते हैं। मैं एंड्रॉइड रिटर्न प्रकार से परिचित नहीं हूं लेकिन समाधान इस तरह दिखेगा:

class PermissionsChecker { 
    public String checkSelfPermission(context, name) { 
     return ContextCompat.checkSelfPermission(context, name); 
    } 
} 
class YourApp { 
    private PermissionsChecker permissionsChecker; //need to inject this via setter or constructor 
    public doSomething() { 
     boolean result = permissionsChecker.checkSelfPermission(context, name).equals(PackageManager.PERMISSION_GRANTED); 
    } 
} 
class YourAppTest { 
    PermissionsChecker permissionsChecker = mock(PermissionsChecker.class); 
    @InjectMocks YourApp app = new YourApp(); 
    @Test 
    public void hasPermissions() { 
     when(permissionsChecker.checkSelfPermission(...)).thenReturn("NOT GRANTED"); 
     app.something(); 
     //verify you get some error 
    } 
} 
संबंधित मुद्दे