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