我正在使用 GCM(Google Cloud Messaging)向 Android 应用发送通知。我的服务器使用的是 Google 提供的gcm-server.jar
,我正在关注文档。我能够毫无问题地向设备发送通知。
现在我正在尝试根据从私有方法返回的Result
(源) 对业务逻辑进行单元测试。PushNotificationDaoGcmImpl
sendNotificationToServer
我知道由于它是一个类Result
而不能被模拟,并且由于没有公共构造函数而简单地将其实例化是行不通的。内部类在外部无法访问,因此我无法以这种方式构建对象。 final
new Result()
Result
Builder
package com.google.android.gcm.server;
我没有找到一个好方法来创建一个Result
从Sender
( source ) 返回的内容。
我的问题是我将如何进行PushNotificationDaoGcmImpl
基于 处理某些条件的单元测试Result
?
public class PushNotificationDaoGcmImpl{
//method I'm trying to test
public void sendPushNotification(){
// builds message to send
Result result = this.sendNotificationToServer(gcmMessage, deviceToken)
//handle result's error conditions
}
//method call I'm trying to mock
private Result sendNotificationToServer(Message gcmMessage, String deviceToken){
return gcmSender.send(gcmMessage, deviceToken, 1);
}
}
//test snipet
@Test
public void testSendNotificationToServer () throws Exception {
Result result = new Result();
PushNotificationMessage message = new PushNotificationMessage("123", "Test", "deviceToken", "Android");
//Having issue with how to handle Result here
doReturn(result).when(gcmPushNotificationDaoSpy).sendNotificationToServer(any(Message.class), anyString());
PushNotificationResult result = gcmPushNotificationDaoSpy.sendPushNotification(message);
//verify business logic was correct based on Result
}