My entities are like below:
public class Class1
{
public int Id { get; set; }
public string Name { get; set; }
public virtual Class2 Class2{ get; set; }
}
public class Class2
{
[Key, ForeignKey("Class1")]
public int Id { get; set; }
public int? Price { get; set; }
public virtual Class1 Class1{ get; set; }
}
And I have the following test that I expected to be failed but it is passed:
[TestMethod]
public void CreateClass2()
{
var mockSet = new Mock<DbSet<Class2>>();
var mockContext = new Mock<theContext>();
mockContext.Setup(m => m.Class2s).Returns(mockSet.Object);
var service = new Class2Service(mockContext.Object);
service.AddClass2(10, 100);
mockSet.Verify(m => m.Add(It.IsAny<Class2>()), Times.Once());
mockContext.Verify(m => m.SaveChanges(), Times.Once());
}
And this is the service.AddClass2
method:
public class Class2Service
{
private readonly theContext _context;
public CoordService(theContext context)
{
_context = context;
}
public Class2 AddClass2(int id, int? price)
{
var class2 = _context.Class2s.Add(new Class2 { Id = id, Price = price });
_context.SaveChanges();
return class2;
}
}
Since I have not added a Class1
yet and entered an invalid id
for Class2
(i.e it is not exist in Class1
), the new entry for Class2
should be invalid since I have constrained it with foreign key. In my project and real database it works as expected and gives me error, but in this test it is passed!