我有一个简单的功能,像这样:
function CreateFileLink()
{
global $Username;
return date("d-m-y-g-i");
}
您如何编写代码以测试返回数据可变的函数?
最佳答案
如果可以某种方式控制该date()函数,则可以进行测试。例如,在这种情况下,您只关心使用“ d-m-y-g-i”调用date函数;您实际上并不关心它的输出。也许像:
function CreateFileLink(DateProvider dateProvider)
{
global $Username;
return dateProvider.date("d-m-y-g-i");
}
抱歉,我什至不知道这是什么语言,但希望您能明白我的意思。在生产代码中,您可以这样做:
DateProvider standardDateProvider = new DateProvider() { Date date(String str) { return date(str); } };
CreateFileLink(standardDateProvider);
但是在您的测试中,您可以提供一个替代实现,如果输入不是您期望的那样,则会抛出错误:
DateProvider mockProvider = new DateProvider()
{
Date date(String str)
{
if(str != "d-m-y-g-i") throw Exception();
return "success";
}
}