There's not (in my view) much point testing that conrtoller.
It just calls the service (which is correct).
Test the service.
As for your issue, your test mocks out the service and then has the service pas a valid book back from the create call.
If you want it to throw a validation exception then that call should throw the exception.
The only thing you really need to test here (similar to the Controller, in fact) is that it calls the correct method in the bookRepository, with the correct value and returns the List unchanged.
One question to ask yourself at this point is whether it shold be doing anything else?
How does it handle a null value sent in?
Should this do some validation, or simply rely on the underlying call to handle that.
This is the sort of thing that would come out if you wrote the tests first, rather than writing tests to match the methods you've already written.