Embedding in double quotes should work. What I don't get is why you used so many options if the requirement is just to test the presence of the string. The following should work:
Code:
grep -q "word1->word2" testfile && echo found it
where the && echo part is just for testing. Even the usage of a character list (square brackets in your first example) should work. If not you have to investigate a little more.