c# - 如何在 C# 中编写多行 SQL 字符串但将其视为单行字符串
问题描述
应用程序中有一部分会生成 SQL 语句。它有一个单元测试,目前只比较给定的查询字符串是否与预期的查询字符串匹配。我正在使用带插值的多行字符串(简化示例)
command.Should().Be($@"UPDATE `todo`
SET `todo`.`is_done`=0
WHERE `todo`.`id`='a9cebb04-fa7d-4071-9f3e-0704bd3352fa'");
以这种方式编写多行字符串看起来像这样
"UPDATE `todo`
SET `todo`.`is_done`=0
WHERE `todo`.`id`='a9cebb04-fa7d-4071-9f3e-0704bd3352fa'"
标识用空字符填充。通过代码生成的 SQL 字符串是这样的
"UPDATE `todo` SET `todo`.`is_done`=0 WHERE `todo`.`id`='a9cebb04-fa7d-4071-9f3e-0704bd3352fa'"
单元测试失败,因为生成的字符串与预期的字符串不匹配。如何从预期的字符串中删除空字符?因为目前测试失败了
预期字符串为 ... 长度为 377,但 ... 长度为 206 ...
解决方案
您可以使用字符串连接在源代码中实现类似的格式,以及所需的字符串值:
command.Should().Be("UPDATE `todo` " +
"SET `todo`.`is_done`=0 " +
"WHERE `todo`.`id`='a9cebb04-fa7d-4071-9f3e-0704bd3352fa'");
推荐阅读
- http - Indy 10 HTTPS 代理
- sql - PIVOT 多列不考虑聚合结果
- command-line - 由于权限更改导致的总线错误(核心转储)
- c# - 使用 { get; 将 .json 反序列化为 C# 放; } (牛顿软件)
- angular - 从 Angular 2 迁移到 Angular 4 后,模块“AppModule”导入错误意外值“t”。请添加@NgModule 注释
- mysql - 可以使用普通的 MySql jdbc 驱动程序写入 Mariadb。那为什么要使用单独的 MaraDB 驱动程序呢?
- c# - transform.forward 仅适用于 0,0,0 旋转,我想让它独立于旋转
- ansible - Ansible - 将字符串与变量组合以形成现有变量
- ios - 当用户稍后在 ios 11 中允许通知时使用推送通知
- selenium - 如何在 Selendroid 检查器中查看屏幕截图?