Rails5 - 为服务编写单元测试的最佳方法是什么?

时间:2017-02-15 19:58:06

标签: ruby-on-rails runit

在我的应用程序中,我有几项服务(纯红宝石)。实施单元测试的最佳方法是什么? shoiuld我为控制器实施额外的单元测试,或仅为服务创建单独的测试?

更新 - 已实施的解决方案:

  1. UserService的专用测试(test / services / user_service_test
  2. 创建新员工的单元测试包括验证是否调用了UserService.create_user_for_employee方法。测试基于Minitest :: Mock。它需要最小/自动运行' (要求' minitest / autorun'在test_helper中)
  3. EmployeesControllerTest:

    setup do
        #@employee = employees(:one)
        @new_employee = {name: 'name', surname: 'surname', email: 'email@email.com'}
        sign_in users(:admin1)
        @mock = UserService.new
      end
    
    test "should create_employee" do
        assert_difference('Employee.count') do
          post employees_url, employee: @new_employee
        end
    
        @mock.stub :create_user_for_employee, true do
            assert(@mock.create_user_for_employee(@new_employee, 'user'))
        end
    
        assert_redirected_to employees_url
      end
    

1 个答案:

答案 0 :(得分:0)

您的/app/services文件夹中可能包含简单的ruby类。 然后为每个单独的服务编写非常简单的单元测试。 将它们放在/test/services/spec/services/文件夹下。 对于为应用程序定义的每个类,应该有一个单元测试文件。