내 애플 리케이션에서 나는 순수한 루비 serveral 서비스를했습니다. 단위 테스트를 구현하는 가장 좋은 방법은 무엇입니까? shoiuld 컨트롤러에 대한 추가 단위 테스트를 구현하거나 서비스에 대해서만 분리 된 테스트를 작성합니까?Rails5 - 서비스 단위 테스트를 작성하는 가장 좋은 방법은 무엇입니까?
업데이트 - 구현 용액 : UserService.create_user_for_employee 메소드가 호출되면 새로운 종업원을 만드는 UserService (시험/서비스/user_service_test
- 전용 시험 인증을 포함하는 시험 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_controller를 employee.save 다음에 호출하여 UserService.new.create_user (@employee) 메서드를 호출하면 각 새 직원에 대한 사용자 계정이 자동으로 생성됩니다. 이 경우에 나는 내 테스트에서 "create_employee가 있어야한다"라고 주장한다. UserService 메소드가 호출되었다는 것을 주장해야한다. - 그러나 내가 http://edgeguides.rubyonrails.org/testing.html을보고있을 때 그 주장을 보지 않는다. .... 어떤 생각으로 어떻게 할 수 있습니까? – MaciekR
@MaciekR 당신이 찾고있는 것은 Mocks입니다. 'Test :: Unit'을 사용한다면 Mocha를 포함시키고'UserService.expects (: new) .once'라고 쓸 수 있습니다. Rspec에서'expect (UserService) .to receive (: new)'와 같을 것이다. –
thx - 제안에 따라 구현 된 것으로 내 질문을 업데이트했습니다. – MaciekR