2014-10-31 11 views
5

का उपयोग करके any_instance stub mocha से any_instance का उपयोग किये बिना मैं निम्नलिखित कैसे कर सकता हूं? मैं बस एक संरक्षित नियंत्रक को described here के रूप में रुपये का उपयोग किए बिना परीक्षण करना चाहता हूं।Minitest

class PortfoliosControllerTest < ActionController::TestCase 

    setup do 
    @portfolio = portfolios(:p2) 
    user = @portfolio.user 

    token = Doorkeeper::AccessToken.create!(application_id: 'minitest', 
              resource_owner_id: user.id) 
    PortfoliosController.any_instance.stubs(:doorkeeper_token).returns(token) 
    end 
end 
+1

देख आप कोई पुस्तकालयों के साथ छोटा करते के लिए इस समाधान को देखा है? http://stackoverflow.com/a/10329105/356060 – TuteC

उत्तर

5

आपको पोर्टफोलियो नियंत्रक के किसी भी उदाहरण को रोकने की आवश्यकता नहीं है, केवल उदाहरण है कि परीक्षण का उपयोग कर रहा है। यह @controller चर में उपलब्ध है, जैसा कि ActionController::TestCase documentation में बताया गया है।

class PortfoliosControllerTest < ActionController::TestCase 

    setup do 
    @portfolio = portfolios(:p2) 
    user = @portfolio.user 

    token = Doorkeeper::AccessToken.create!(application_id: 'minitest', 
              resource_owner_id: user.id) 
    @controller.stubs(:doorkeeper_token).returns(token) 
    end 
end 
+0

'NoMethodError: # <पोर्टफोलियो नियंत्रक: 0x007fdce8a49eb8> के लिए अपरिभाषित विधि 'स्टब्स'> अब मुझे लगता है कि मुझे न्यूनतमतम –

+0

के साथ स्टब करने का सही तरीका चाहिए यदि आपको मोचा की आवश्यकता है फिर '.stubs' उपलब्ध होगा। यह त्रुटि मुझे लगता है कि आपने मोचा लोड नहीं किया है। – blowmage

+1

मोचा की आवश्यकता नहीं है मेरे प्रश्न का हिस्सा है। मैं केवल न्यूनतमतम का उपयोग करके इसे कैसे कर सकता हूं? –

2

मैं this gem की जांच करने की सिफारिश करता हूं। आप कुछ पसंद है करने की अनुमति होगी ... अच्छा के

class PortfoliosControllerTest < ActionController::TestCase 
    def cool_test 
    PortfoliosController.stub_any_instance(:doorkeeper_token, token) do 
     # Assert whatever you were going to assert 
    end 
    end 
end 

तरह के बारे में setup या तो चिंता करने की ज़रूरत नहीं है।

1

'blowmage' जवाब की 'नो मोचा' संस्करण

class PortfoliosControllerTest < ActionController::TestCase 

    setup do 
    @portfolio = portfolios(:p2) 
    user = @portfolio.user 

    token = Doorkeeper::AccessToken.create!(application_id: 'minitest', 
              resource_owner_id: user.id) 
    @controller.stub(:doorkeeper_token,token) do 
     #do your tests 
    end 
    end 
end 

http://www.rubydoc.info/gems/minitest/4.2.0/Object:stub

संबंधित मुद्दे