我在Angular中具有以下功能:
public class AlarmNotificationReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String NOTIFICATION_CHANNEL_ID = "my_channel_id_01";
NotificationCompat.Builder builder = new NotificationCompat.Builder(context, NOTIFICATION_CHANNEL_ID);
builder.setAutoCancel(true)
.setDefaults(Notification.DEFAULT_ALL)
.setWhen(System.currentTimeMillis())
.setSmallIcon(R.mipmap.ic_launcher_round)
.setContentTitle("It's Yoga Time!")
.setContentText("Time to train again.")
.setContentInfo("Info");
NotificationManager notificationManager = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(1,builder.build()); } }
如何编写一个使用Jasmine进入catch块的测试用例?
答案 0 :(得分:0)
您需要使用Jasmine的间谍。看起来像这样:
describe('when there is an error', () => {
beforeEach(() => {
const error = new Error()
spyOn(http, 'post').and.returnValue(of(error));
spyOn(service, 'handleError').and.callThrough();
service.getData({});
});
it('should handle the error', () => {
expect(service.handleError).toHaveBeenCalled();
});
})
Jasmine的间谍使我们能够模拟返回值(例如来自HTTP请求的错误),并测试代码中的替代路径。这就是returnValue
正在做的事情。
callThrough
仅告诉Jasmine监视该函数的实际实现的调用。对于handleError
,我们只是想确保它在出现错误时能够运行。
如果实际上是我们的间谍被召唤,toHaveBeenCalled
的所有操作都将返回true。
还有toHaveBeenCalledWith
,您可以在其中进行测试以确保使用特定的参数调用了代码。在这种情况下,也许您实际上想将错误对象传递给handleError
。