0

I have the following Pojo:

public class Football extends Item { public Football(Colour colour, Double price ) { super(colour, 18.99); } public Double getPrice() { return price; } } 

I thought that when I created my mock in unit test as such:

@Mock Football football; @BeforeEach private void initMocks() { MockitoAnnotations.openMocks(this); } 

When I call the method getPrice() on my football mock - I should get 18.99 back as the price is hardcoded in the constructor params. However I do not.

Why is this the case?

0

1 Answer 1

1

This is precisely what's supposed to happen.

A mock is an object where all the methods (with some documented exceptions) have been replaced EITHER

  • by a method that does nothing, and returns either null, zero, false or empty, depending on the method's return type; OR
  • by a method whose behaviour and return value you've specified yourself, via stubbing the method.

This includes the getPrice method in your example. It's been replaced by a method that does nothing and returns 0.0.

In Mockito, methods whose return types are

  • primitive types, like double, int and so on,
  • wrapper types, like Double, Integer and so on,

will return the appropriate kind of zero/false, if you haven't stubbed them to do otherwise.

Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.