gpt4 book ai didi

c# - 集成测试 : Am I doing it right?

转载 作者:太空狗 更新时间:2023-10-29 20:08:31 25 4
gpt4 key购买 nike

这是我为与数据库交互的类编写的集成测试:

[Test]
public void SaveUser()
{
// Arrange
var user = new User();
// Set a bunch of properties of the above User object

// Act
var usersCountPreSave = repository.SearchSubscribersByUsername(user.Username).Count();
repository.Save(user);
var usersCountPostSave = repository.SearchSubscribersByUsername(user.Username).Count();

// Assert
Assert.AreEqual(userCountPreSave + 1, userCountPostSave);
}

在我看来,如果不涉及 SearchSubscriberByUsername 函数,我就无法测试 Save 函数以确定用户是否已成功保存。我意识到集成测试并不意味着应该一次测试一个代码单元的单元测试。但理想情况下,如果每次测试都可以在我的存储库类中测试一个函数,那就太好了,但我不知道如何实现这一点。

到目前为止,我编写的代码是否还不错,还是有更好的方法?

最佳答案

您的测试有问题。当您测试数据是否保存到数据库中时,您应该测试它是否在数据库中,而不是存储库说它在数据库中。

如果您正在测试存储库的功能,那么您无法通过询问它是否正确完成来验证该功能。这相当于对某人说“你做对了吗?”他们会说是的。

假设存储库永远不会提交。您的测试会顺利通过,但数据不会在数据库中。

因此,我要做的是打开一个到数据库的连接(纯 SQL)并检查数据是否已正确保存。只需要前后各一个select count(*)就可以保证用户已经被保存了。如果这样做,您也可以避免使用 SearchSubscribersByUsername。

如果您正在测试存储库的功能,根据定义,您不能信任存储库。

关于c# - 集成测试 : Am I doing it right?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6422393/

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