Skip to content

Methods Run in Incorrect Order When Using Method Naming Conventions #266

@mylifeandcode

Description

@mylifeandcode

In the following class, the Then method (ThenTheMessageShouldBeRetrievedFromTheContext()) runs first instead of the Given method (GivenTheContextIsValid()) (please ignore dumb debugging code in place only for breakpoints ;) ):

    public class ShouldLogMessageBodyOnPreReceive
    {
        private Core.Observers.ReceiveObserver sut;
        private Mock<ILogger> mockLog;
        private Mock<ReceiveContext> context;

        public ShouldLogMessageBodyOnPreReceive()
        {
            sut = new Core.Observers.ReceiveObserver();
            mockLog = new Mock<ILogger>();
            Core.Observers.ReceiveObserver.Log = mockLog.Object;
        }

        void GivenTheContextIsValid()
        {
            int x = 1;
        }

        void WhenTheMethodIsInvoked()
        {
            int x = 1;
        }

        void ThenTheMessageShouldBeRetrievedFromTheContext()
        {
            int x = 0;
        }

        void AndTheMessageShouldBeLogged()
        {
            int x = 0;
        }

    }

Renaming the then method from ThenTheMessageShouldBeRetrievedFromTheContext to ThenWeShouldGetTheMessageBody corrects the issue and the methods run in the correct order:

    public class ShouldLogMessageBodyOnPreReceive
    {
        private Core.Observers.ReceiveObserver sut;
        private Mock<ILogger> mockLog;
        private Mock<ReceiveContext> context;

        public ShouldLogMessageBodyOnPreReceive()
        {
            sut = new Core.Observers.ReceiveObserver();
            mockLog = new Mock<ILogger>();
            Core.Observers.ReceiveObserver.Log = mockLog.Object;
        }

        void GivenTheContextIsValid()
        {
            int x = 1;
        }

        void WhenTheMethodIsInvoked()
        {
            int x = 1;
        }

        void ThenWeShouldGetTheMessageBody()
        {
            int x = 0;
        }

        void AndTheMessageShouldBeLogged()
        {
            int x = 0;
        }

    }

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions