On the man page for gpg(1), the descriptions for the options --passphrase, --passphrase-fd, and --passphrase-file all say:
Note that this passphrase is only used if the option --batch has also been given. This is different from GnuPG version 1.x.
This information is incomplete. These three options also require --pinentry-mode=loopback to function correctly. The man page should say instead:
Note that this passphrase is only used if the options --batch and --pinentry-mode=loopback have also been given. This is different from GnuPG version 1.x.