You could write down some amounts from your head and the amount of change the program should suggest to return. (One your shopping receipts plus some imaginary payments for each amount in it, for example) Put those as test function unittest and run that with your function for change to test if it passes the tests.
It would be little difficult to keep track of all coins that actually exist in cash box after actions, so you maybe can assume infinite amount of change.
To start with here one test case:
Price 4.35, payment 5.
First returned coin 25c=quarter, why? What are the other coins? Why?