0
在我的应用程序中,我有服务(纯红宝石)。什么是实施单元测试的最佳方法? shoiuld我为控制器实现额外的单元测试,还是仅为服务创建一个单独的测试?Rails5 - 编写服务单元测试的最佳方法是什么?
更新 - 实施的解决方案:
为UserService(测试/服务/ user_service_test- 专用测试用于创建新员工包括验证,如果UserService.create_user_for_employee方法被调用的测试是基于MINITEST:。 :模拟它需要 'MINITEST /自动运行'(需要test_helper 'MINITEST /自动运行')
EmployeesControllerTest:
setup do
#@employee = employees(:one)
@new_employee = {name: 'name', surname: 'surname', email: '[email protected]'}
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
thx - 这就是我所期望的最佳解决方案。但是 - 有一个问题。让employee.save在调用方法UserService.new.create_user(@employee)后说''employee_controller'' - 您想为每个新员工自动创建用户帐户。在这种情况下,我想在我的测试“应该create_employee”我应该断言UserService方法被调用 - 但是当我在看http://edgeguides.rubyonrails.org/testing.html一个没有看到断言....任何想法如何做到这一点? – MaciekR
@MaciekR你要找的是Mocks。如果你使用'Test :: Unit',你可以包含Mocha并写入'UserService.expects(:new).once'。在Rspec中,它会像'expect(UserService).to接收(:new)'一样。 –
thx - 我根据您的建议更新了我的问题。 – MaciekR