0
package johnny.me.controller;

import com.sparkpost.Client;
import com.sparkpost.model.responses.Response;
import com.sparkpost.exception.SparkPostException;
import org.springframework.stereotype.Service;

/**
* Sparkpost class sends the email using
* the sendmessage methood
*/

@Service 公共类 SparkPostController {

    String API_KEY = "API KEY";
         Client client = new Client(API_KEY);
         private static String from_email = "me@yahoo.com";
         private static String subject = "Time equation";
         private static String text = "";

    public Response sendMessage(String recipient, String message) throws SparkPostException {
         return client.sendMessage(from_email,recipient,subject,
                 text,message);
    }

}

这是我的 sparkpost 控制器类。尝试进行单元测试/模拟以发送消息。也称为回归测试请对单元测试非常具体。让我的课程在测试文件夹下制作。这就是我所得到的。

4

1 回答 1

0

我是您上面提到的 SparkPost java 库的作者/维护者。

您上面显示的用例是 SparkPost 库的“最简单”用法。对于像您这样的代码,人们通常会使用您定义的“sendMessage(...)”函数创建一个接口。当单元测试让spring(或测试)注入您的“存根”版本而不是生产版本时。但是在生产或集成负载中,您在上面显示的是。

如果你真的想加载 SparkPost 库,有几种方法可以针对第三方库进行测试。我这样做的一种方法是使用 JMock 对库进行测试。或者,您可以在客户端具体实例上设置 Stub IRestConnection(这是一个更高级的解决方案)。

根据您的需要,我认为上面的第一个建议是您最好的选择,并且在您使用其他 3rd 方库时也很常见。

“App”目录中的文件是必不可少的示例用法/集成示例。随意向该项目添加一个问题以添加演示应用程序单元测试: https ://github.com/SparkPost/java-sparkpost

“Lib”中的文件是实际的 SparkPost 库。

您可以在此处找到现有的库单元测试,这可以帮助您了解它是如何在那里完成的。本质上,“ IRestConnection ”有一个存根实现。是一个使用 StubRestConnection 而不是默认的真实RestConnection 创建的示例。

我希望这有帮助。

于 2017-04-03T13:35:39.343 回答