I am very new using Moq and unit tests.
I have been watching videos and reading different articles but I can't find the right example.
I am trying to mock a method that returns list of a object, but I'm getting this error
Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException: 'Assert.AreEqual failed.
Expected:<System.Collections.Generic.List'1[BusinessLayer.Model.XSIPhoneTrunkDetails]>. Actual:<System.Collections.Generic.List'1[BusinessLayer.Model.XSIPhoneTrunkDetails]>.
This is my code:
Controller:
public List<XSIPhoneTrunkDetails> GetTrunksRange(LocationVM location)
{
//var response = false;
List<XSIPhoneTrunkDetails> newDetails = new List<XSIPhoneTrunkDetails>();
if (!string.IsNullOrWhiteSpace(location.TrunksRange) && !location.TrunksRange.Equals("[]"))
{
var xSIPhoneTrunkDetails = JsonConvert.DeserializeObject<List<XSIPhoneTrunkDetails>>(location.TrunksRange);
foreach (var item in xSIPhoneTrunkDetails)
{
if (item.RangeStart.Equals(item.RangeEnd))
item.RangeEnd = String.Empty;
if (item.XSIPhoneTrunkDetailsID <= 0)
newDetails.Add(item);
}
}
return newDetails;
}
Interface:
public interface ILocation
{
List<XSIPhoneTrunkDetails> GetTrunksRange(LocationVM location);
}
My unit test
[Fact]
public void ShouldGetTrunkRange()
{
using (var mock = AutoMock.GetLoose())
{
var phone = GetLocationVMsNotRange().First();
var item = new List<BusinessLayer.Model.XSIPhoneTrunkDetails>();
mock.Mock<ILocation>()
.Setup(x => x.GetTrunksRange(phone))
.Returns(item);
var cls = mock.Create<Location>();
var result = cls.GetTrunksRange(phone);
Microsoft.VisualStudio.TestTools.UnitTesting.Assert.AreEqual(item.ToList(), result.ToList());
}
}
What am I doing wrong?