There are certain everyday things you eat that can cause a false positive test for varying drugs. There's a thread on here somewhere that lists them out.
I suppose you can ask for an oral swab test. I believe they're more accurate.
However, if you are doing any other drug (occasionally), like heroin, commonly the drugs you mention are mixed in with what is supposed to be heroin. So in that case, you would be getting a positive test.