Com base no que você descreveu, sugiro que essa seja uma razão horrível para usar um ponteiro de função. Ele aumentará sua capacidade de depurar, analisar os core dumps e complicará o desenvolvimento / manutenção futuros. Os ponteiros de função têm o seu lugar, mas este não é um deles.
Acho que você está se aproximando do teste do ponto de vista errado. A_func depende da presença do B_func para que ele funcione. Portanto, você não pode realmente testar A sem ter a implementação real de B no lugar. Colocar um B_func simulado no local irá gerar apenas um conjunto limitado de testes para A_func. Por definição, você não pode exercitar totalmente A_func sem o B_func real no lugar.
Supondo que você não esteja lidando com uma série em cascata de inclusões de módulo, o conjunto de testes apropriado teria alguns testes para exercitar o B_func e, em seguida, alguns testes adicionais para exercitar as variações que o A_func pode passar. Entende-se que você pode ter alguma redundância entre os testes para B_func e o teste indireto de B_func de A_func, mas geralmente não é grande coisa.