0

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

更新 - 实施的解决方案:

  1. UserService 的专用测试 (test/services/user_service_test
  2. 创建新员工的单元测试包括验证是否调用了 UserService.create_user_for_employee 方法。测试基于 Minitest::Mock。它需要“minitest/autorun”(在 test_helper 中需要“minitest/autorun”)

员工控制器测试:

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
4

1 回答 1

0

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

于 2017-02-15T21:18:07.260 回答