My DD was 2 in December, and for the last few months she has been doing the same thing. She likes tuna salad sandwiches, the other day she asked for one for lunch. I confirmed with her three times that if I made it she was going to eat it, she agreed and seemed enthusiastic. I put it in front of her and she pushed it away yelling "No tuna!" and telling me she wanted porridge instead. So she ended up not having lunch. When she woke from her nap she said she was hungry so I gave her the tuna sandwich and she yelled "No tuna!" again and wouldn't eat it. So she had nothing until supper time. Then for lunch the next two days in a row she ate a tuna salad sandwich with no fuss whatsoever. It is very irritating, especially when I know it is something she likes and I know she is just being picky as a way of testing boundaries. If she genuinely doesn't like the taste of something then I won't make her eat it (although we do require that she taste it), but it drives me absolutely mad when I know she likes it, she asks me to make it, and then she refuses to eat it.
She's also started being defiant about things that I know she enjoys. For example, the playgroup we go to on Tues and Thurs is her most favourite thing in the world, she talks about the bouncy castle and the other kids constantly throughout the week, and often wakes up in the morning asking "playgroup today?". But for the last couple of weeks when we get in the car and I tell her we're going to playgroup she starts yelling "no playgroup!" or "i go home now!" and doing a fake/pretend cry. Then when we get there she is happy as can be and can't wait to get inside to play. Nothing bad has happened at playgroup, I am always there with her and supervising her so I know that nothing has changed or scared her or anything. I don't know why she is acting like she doesn't want to go when she clearly loves it. I feel like no matter what I offer her she says no these days, if I told her we were going to Disney Land and having chocolate for supper she would tell me no and demand porridge instead and ask to go home.