因此,我正在尝试存根数据库连接器以便为其编写测试。问题是数据库连接器是一个非常薄的层,对它的查询有点开放。我希望我的代码能够从数据库中请求一个变量,并且连接器应该可以接受。此调用的签名如下所示:
dim = getDimension(self,dimensionName,otherIndentifyingInformation)
(这一切都在 MATLAB 中——希望答案与语言无关,或者至少在 MATLAB 中不是不可行的。)
当我在我的代码中使用它时,dimensionName
它是存储在数据库中的少数东西之一。如果代码调用它,但它不存在,那很好。这里的问题是我想测试一些对 进行两次调用的代码,getDimension
例如:
alt = conn.getDimension('alt',otherID);
str = conn.getDimension('str',otherID);
出于(希望)显而易见的原因,alt
并且str
不保证相同。事实上,它们通常不是。
所以,我的问题。如果我想存根 getDimension 以返回良好的测试值,我该怎么做?创建getDimensionAlt
似乎很笨拙,因为可以从数据库中出来的东西的数量是无限的,维护起来会很痛苦。有没有比将逻辑放入我的存根对象更好的方法?这似乎是错误的处理方式......
编辑:建议设置一个 testDB。那么我不是必须为每个测试用例设置一个 testDB 吗?在每个测试中,我都必须创建一个数据库连接,将其作为存根返回,运行测试,然后清理数据库连接。这似乎对每个测试来说都是很多开销,尤其是当它甚至不是我正在测试的系统时。
我想可以设置一个 testDB,并每次都用适当的值填充它。这是好习惯吗?
编辑2:也许我的问题不清楚。我有一小段代码正在尝试测试。它并不比上面那两行复杂多少,我想干净利落地测试一下。问题是存根getDimension
调用取决于参数。我不需要将此存根与其他测试重用。
I think the answer might be "It's OK to have simple logic in your stubs." This is all confounded by the fact that there's no anonymous classes or stubbing framework in MATLAB, so that's hard, but I want to make sure what I'm doing is conceptually clear before I go off and write a stubbing framework in MATLAB.