我正在尝试对与 MessageReceiver 类具有依赖关系的 Azure 函数进行单元测试。类定义如下:
public class MessageReceiver : ClientEntity, IMessageReceiver, IReceiverClient, IClientEntity
Run Code Online (Sandbox Code Playgroud)
我需要moq的方法属于接口IMessageReceiver
我尝试模拟 MessageReceiver 类,并设置 CompleteAsync 方法,但出现错误:
Non-overridable members (here: MessageReceiver.CompleteAsync) may not be used in setup / verification expressions.
Run Code Online (Sandbox Code Playgroud)
据我所知,这意味着非虚拟、抽象或重写的方法不能被重写/最小起订量。我尝试手动创建一个子类并使用定义中的新关键工作声明一个方法 CompleteAsync,
public new Task CompleteAsync(string lockToken)
Run Code Online (Sandbox Code Playgroud)
在这种情况下,代码会在调用 CompleteAsync 方法时引发错误:
Guid should contain 32 digits with 4 dashes (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).
Run Code Online (Sandbox Code Playgroud)
但我认为它不起作用,因为我尝试按 F11 进入该方法,但我的方法没有被调用...有什么想法或建议吗?
我想使用 EF FromSqlInterpolated 或 FromSqlRaw 创建查询,以允许我使用 Like 子句,但我不知道在不打开应用程序遭受 SqlInjection 攻击的情况下执行此操作的正确方法是什么。第一种方法将我带到了以下代码
var results = _context.Categories.FromSqlInterpolated(
$"Select * from Category where name like {"%" + partialName + "%"}");
Run Code Online (Sandbox Code Playgroud)
第一个测试工作正常,它在提供预期字符串时返回结果,并且当我提供类似的内容时不返回任何内容';select * from Category Where name='Notes'--%';
仍然我对 SqlInjection 不太了解,至少不足以对之前显示的查询感到安全。有人知道查询是否安全,或者是否有正确的方法?谢谢