我正在使用与数据库交互的 api。这个 api 具有查询、加载和保存元素到数据库的方法。我已经编写了集成测试,它们执行诸如创建新实例之类的操作,然后检查当我对该实例进行查询时,是否找到了正确的实例。这一切都很好。
我想对此代码进行更快的单元测试,但我想知道任何单元测试的有用性以及它们是否真的给了我任何东西。例如,假设我有一个类可以通过 API 保存一些元素。这是伪代码,但了解我使用的 api 是如何工作的。
public class ElementSaver
{
private ITheApi m_api;
public bool SaveElement(IElement newElement, IElement linkedElement)
{
IntPtr elemPtr = m_api.CreateNewElement()
if (elemPtr==IntPtr.Zero)
{
return false;
}
if (m_api.SetElementAttribute(elemPtr,newElement.AttributeName,newElement.AttributeValue)==false)
{
return false;
}
if (m_api.SaveElement(elemPtr)==false)
{
return false;
}
IntPtr linkedElemPtr = m_api.GetElementById(linkedElement.Id)
if (linkedElemPtr==IntPtr.Zero)
{
return false;
}
if (m_api.LinkElements(elemPtr,linkedElemPtr)==false)
{
return false;
}
return true;
}
}
是否值得编写模拟 m_api 成员的单元测试?似乎我可以测试,如果任何各种调用失败,则返回 false,如果所有各种调用都成功,则返回 true,并且我可以设置期望使用预期参数调用各种方法,但是这有用吗?如果我要重构这段代码,使它使用一些稍微不同的 api 方法,但获得相同的结果,这会破坏我的测试,我需要更改它们。这种脆性似乎不是很有用。
我应该为这样的代码进行单元测试,还是应该坚持使用已有的集成测试?