gpt4 book ai didi

c# - 如何模拟添加到 DbContext 的记录

转载 作者:太空狗 更新时间:2023-10-30 01:15:32 24 4
gpt4 key购买 nike

我有这样的方法:

private void CreateTaskFromModel(ForgotPasswordViewModel fpModel)
{
var message = _dbContext.Create<Message>();

message.MessageType = "TASK".PadLeft(10);
message.Assigned_User_K = fpModel.SendPasswordRequestTo.Trim();
message.Assigned_Date = DateTime.Today;
message.Source_User_K = string.Empty;
message.Title_Focus = "Request Web Password";

_dbContext.Messages.Add(message);
}

所以我能够像这样模拟 Create 方法:

Message msg = new Message();
IMyDbContext fakeDbContext = NSubstitute.Substitute.For<IMyDbContext>();

fakeDbContext.Create<Message>().Returns(msg);

但是请注意最后一行它仍然有这段代码,我不知道如何模拟这段代码?

_dbContext.Messages.Add(message);

我正在使用 NSubstittue

最佳答案

消息类型为 DbSet<Message> .所以你需要创建一个 DbSet<Message> 的假/替代实例并让我在 _dbContext.Messages 之前返回.

Message msg = new Message();
IMyDbContext fakeDbContext = NSubstitute.Substitute.For<IMyDbContext>();

var messagesSet = NSubstitute.Substitute.For<DbSet<Message>>();
fakeDbContext.Create<Message>().Returns(msg);
fakeDbContext.Messages.Returns(messagesSet);

您也有兴趣查看是否调用了 Add。您可以在断言中执行此操作。

messagesSet.Received().Add(NSubstitute.Any<Message>());

或者如果您想测试是否从您的创建中添加了相同的实例

messagesSet.Received().Add(msg); // message created earlier in your test

关于c# - 如何模拟添加到 DbContext 的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37866286/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com