public void ShouldPassPrearrangedDelegateMockAsArgument()
        {
            // ARRANGE
            // Creating a mock instance of the Func<string> delegate.
            var delegateMock = Mock.Create<Func<string>>();

            // Arranging: When the mock is called, it should return "Success".
            Mock.Arrange(() => delegateMock()).Returns("Success");

            // ACT
            var testInstance = new DataRepository();
            // Passing the mock into our system under test.
            var actual = testInstance.GetCurrentUserId(delegateMock);

            // ASSERT
            Assert.AreEqual("Success", actual);
        }
        public void ShouldPassDelegateMockAsArgumentAndAssertItsOccurrence()
        {
            bool isCalled = false;

            // ARRANGE
            // Creating a mock instance of the Action<int> delegate.
            var delegateMock = Mock.Create<Action<int>>();

            // Arranging: When the mock is called with any integer value as an argument, it should assign true to isCalled instead.
            Mock.Arrange(() => delegateMock(Arg.AnyInt)).DoInstead(() => isCalled = true);

            // ACT
            var testInstance = new DataRepository();
            // Passing the mock into our system under test.
            testInstance.ApproveCredentials(delegateMock);

            // ASSERT
            Assert.IsTrue(isCalled);
        }