2014-10-27 49 views
1

我的问题是有关测试(MiniTest)的Rails 4.0控制器查询API。因此,举例来说,我有这个控制器:在测试过程中将模拟的API对象传递给rails控制器

class InsolentController 

    def show 

     @result = SomeApi.get value1, value2 

    end 

end 

现在我想测试它不叫我的API,所以如果我是使用ASP.NET MVC我可以做这样的事情:

public Class InsolentController 
{ 
    private SomeAPI someApi; 

    public InsolentController(SomeAPI api = null) 
    { 

     this.someApi = api ?? new SomeAPI(); 
    } 

    public ActionResult Show() 
    { 
     var result = this.someApi.Get(value1, value2); 

     // return, etc... 
    } 
} 

我这样做,以便我可以嘲笑SomeAPI。所以,我怎么去这个问题时,我想用MINITEST与导轨,例如:

require 'test_helper' 

class InsolentControllerTest < ActionController::TestCase 

    test "should get show" do 

     get :show, { value1: 10, value2: 34 } 

     assert_response :success 
    end 

end 
+0

我在看一个类似的问题,你有没有想出解决办法? – 2015-01-11 09:13:05

+0

嗨汤姆,不,我没有。无论如何,我只是在讨论Rails框架,所以这不是什么大不了的事情,但也许它会帮助一些人。很好,你根据你的回答找出了它。 – 2015-01-13 02:11:51

回答

1

我结束了使用rspec-mocks与MINITEST设置它。

你应该很容易就能做这样的事情:

require 'test_helper' 

class InsolentControllerTest < ActionController::TestCase 

    test "should get show" do 
    value1 = 10 
    value2 = 34 
    expect(SomeApi).to receive(:get).with(value1, value2) 

    get :show, { value1: value1, value2: value2 } 
    assert_response :success 
    end 
end 
相关问题