I am trying to write unit test for a trigger which calls batch apex performing callouts first then updates the response to those record.

Trigger's psuedo code looks like:

    trigger AccountTrigger on Account (after update) {
        if(myCondition) {
            Database.executeBatch(new MyBatchClass(), 1);
        }
    }

And batch is:

    public class MyBatchClass implements Database.Batchable<SObject>, 
        Database.AllowsCallouts {
        
        // only relevant execute method
        public void execute(Database.BatchableContext batchableContext, 
        List<Account> accounts) {

            for(Account account: accounts) {

                // make http request callout

                // based on response update account
            }
        }
    }

When I run my test test, it gives me error as:

> System.CalloutException: You have uncommitted work pending. Please commit or rollback before calling out 

From the [related question][1], I understand that `Database.executeBatch` is treated as a DML. When implementing this solution, I get:

> System.CalloutException: Callout from triggers are currently not supported.


Please suggest any workaround or point towards any gap in the design. Any insight is highly appreciated.



  [1]: https://salesforce.stackexchange.com/questions/241980/test-class-with-batch-and-callout