C# 单元测试:使用SQL查询创建和删除条目
我对这个很陌生,我正在尝试做一个测试,我可以在模拟数据库中创建和删除一个对象,但我不知道现在从哪里开始,也不知道如何创建模拟数据库并对其进行读/写C# 单元测试:使用SQL查询创建和删除条目,c#,unit-testing,C#,Unit Testing,我对这个很陌生,我正在尝试做一个测试,我可以在模拟数据库中创建和删除一个对象,但我不知道现在从哪里开始,也不知道如何创建模拟数据库并对其进行读/写 [Fact] public void CreateCommentaar() { //arrange Commentaar commentaar = new Commentaar { CommentaarId = 0, StadId
[Fact]
public void CreateCommentaar()
{
//arrange
Commentaar commentaar = new Commentaar
{
CommentaarId = 0,
StadId = 0,
UserId = "testId",
CommentaarText = "text",
Tijdstip = DateTime.Now
};
string queryString = "INSERT INTO Commentaar(UserId, StadId, CommentaarText, Tijdstip) VALUES("
+ commentaar.CommentaarId + " ,"
+ commentaar.UserId + " ,"
+ commentaar.StadId + " ,"
+ commentaar.CommentaarText + " ,"
+ commentaar.Tijdstip + " ,";
//act
//Run Mock sql query
//assert
//1 commentaar object should exist in mock DB now
}
[Fact]
public void DeleteCommentaar()
{
//arrange
Commentaar commentaar = new Commentaar
{
CommentaarId = 0,
StadId = 0,
UserId = "testId",
CommentaarText = "text",
Tijdstip = DateTime.Now
};
string queryString = "INSERT INTO Commentaar(UserId, StadId, CommentaarText, Tijdstip) VALUES("
+ commentaar.CommentaarId + " ,"
+ commentaar.UserId + " ,"
+ commentaar.StadId + " ,"
+ commentaar.CommentaarText + " ,"
+ commentaar.Tijdstip + " ,";
//act
//Run Mock sql query
//assert
//1 commentaar object should be deleted
}
但我不确定如何从这里继续。这里真的没有什么可测试的。测试是否会在模拟数据库中插入某些内容就是测试您的模拟逻辑
测试sql查询是否正确最好使用集成测试和测试数据库来完成。您不能启动一个
string queryString = "SELECT COUNT(id) FROM Commentaar where id = 0"
如果该查询返回0,则表示您的评论已被删除
一个问题只有当您的第一个UT工作并插入了一个ID为0的行时,它才会起作用
你能分享你正在进行单元测试的代码吗?如果您直接与数据库进行交互,那么这不是单元测试,而是集成测试。与测试DBMS是否正确响应insert或delete命令不同,您的dac上无疑有一个save或delete方法。您的单元测试通常是确定是否从dac传递适当的命令和参数以响应给定的对象。@ChetanRanpariya我没有该代码,这是我需要帮助的事情,因为我不知道或找不到如何从这里继续。我所拥有的只是模型和伪代码如果你模拟数据库并在测试中编写SQL,你肯定没有在测试中覆盖任何代码?您的代码如何与数据库通信?如果这是硬编码到一个特定的数据库,你将无法模拟它。你几乎是对的。目前,我刚刚测试了调用服务是否也正确调用了SQL查询所在的存储库,我认为我现在不能做更多的事情。