Q:

Trigger isUpdate being fired during insert

I have a trigger on an Account object that fires on update. In my unit test for the trigger, I create a test Account and insert it, which somehow causes the update trigger to fire. This causes an issue because I need to set up some more test objects to associate to the test account, and the premature firing of the update trigger causes a bug.
Here is what the trigger looks like:
trigger AccountTriggers on Account (before update, after update) {
    if(checkRecursion.runOnce()) {
        if(trigger.isUpdate && trigger.isBefore ) {
            AccountTriggerHelper.BeforeUpdateTriggers(trigger.new);
        }
    }
}

This is what my test setup looks like. 
@testSetup private static void setup() {
        //Create the test objects
        Account acc = new Account();
        List<Contact> contactList = new List<Contact>();

        //Set up and insert Accounts
        acc.Name = 'Test Account';
        acc.Abby_Stage__c = '5.) Paid Account';
        acc.Type_of_Account__c = 'Abby Connect';
        acc.Lifecycle_Stage__c = 'Customer';
        acc.Update_Proration__c = true;
        acc.Update_Proration_End__c = false;
        insert acc; //UPDATE TRIGGER IS FIRED HERE

        //I set up a bunch more test data here that is required for the trigger
}

Is there anything I can do to stop the update trigger from firing on the insert? Or do I just need to set up my test to tell the difference between the trigger firing on insert vs. actually on update?
Thank you.

A:

You most probably have a workflow or a process flow on Account object, that performs some update following the insert, and cause its update triggers to execute. However, this is completely normal and the expected behavior. The way to address this is within the update trigger itself, ensuring that the operations within that trigger only executes per a certain criteria such as field change.
E.g. 
If(Trigger.new[i].FieldName__c != Trigger.oldMap.get(Trigger.new[i].Id).FieldName__c){
//Do Stuff
}

