Unit testing with dependency injection and MOQ
There are a number of issues in your code.


Naming. Methods should use verb phrases to denote the action they perform and try to be specific. So your DateList method should become something like GetWorkingDates, or just GetDates if kind of dates is obvious in your case.
Test naming. Do spend some time on composing a name for your unit test method that describes what exactly is being verified. DateListTest2 does not provide any information except that it deals with DateList() method somehow.
Incorrect responsibilities. Let's look at IDropDownDataRepository interface. It is an interface to obtain a list of dates (probably). And this functionality may be used in different places, not just to render this list in the HTML. But instead of returning IEnumerable&lt;DateEntity&gt; or any other type of collection, it returns HttpResponseMessage, which is only useful for HTTP communication. The only class that knows about specifics of how the list of dates should be used - is your DropDownDataController class. And in your case (no special HTTP response or different HTTP codes) - DropDownDataController.DateList method can return IEnumerable&lt;DateEntity&gt; as well.
Do use AsNoTracking() method when you perform read-only queries.
Test expected resulting behavior instead of the way it was done. If your class manages to satisfy all your tests without calling the mocked instance, then either result of the mocked instance call is insignificant, or you should improve tests by adding new test(s) to verify the change in behavior depending on outcome of the call to mocked instance. Your DateListTest1 test currently expose such a problem, as the only thing that it verifies is that controller calls IDropDownDataRepository.DateList() to render the output. Instead, you should setup IDropDownDataRepository.DateList() to return some list, and verify that the return value of the controller method returns the data in expected way. If the class under test does not call the mocked instance - it will fail such a verification anyway. In general the usage of Mock&lt;T&gt;.VerifyAll is not recommended.


As a result you may get something like this:

public interface IDropDownDataRepository
{
    IEnumerable&lt;DateEntity&gt; GetDates();
}

public class DropDownDataRepository : IDropDownDataRepository
{
    //Should be injected as well
    private MyDatabaseEntities db = new MyDatabaseEntities();

    public IEnumerable&lt;DateEntity&gt; GetDates()
    {
        return from date in db.MyProcedure().AsNoTracking()
               select date;
    }
}

public class DropDownDataController : ApiController
{
    private IDropDownDataRepository _dropDownDataRepository;

    public DropDownDataController(IDropDownDataRepository dropDownDataRepository)
    {
        _dropDownDataRepository = dropDownDataRepository;
    }

    [HttpGet]
    public IEnumerable&lt;DateEntity&gt; GetDates()
    {
        try
        {
            return _dropDownDataRepository.GetDates();
        }
        catch
        {
            // I would leave the default error handling which would return 500 error
            throw new HttpResponseException(HttpStatusCode.NotFound);
        }
    }
}

public class DropDownDataControllerTest
{
    [TestMethod]
    public void GetDatesShouldReturnDatesFromRepository()
    {
        //Arrange
        var mockRepository = new Mock&lt;IDropDownDataRepository&gt;();
        var dateEntities = new[] { new DateEntity { Date = new DateTime(1990, 1, 1) }, new DateEntity { Date = new DateTime(1990, 1, 1) } };
        mockRepository
            .Setup(x =&gt; x.GetDates())
            .Returns(dateEntities);

        DropDownDataController controller = new DropDownDataController(mockRepository.Object);

        //Act            
        var response = controller.GetDates();

        //Assert
        Assert.AreEqual(dateEntities, response);
    }
}