You should use BucketIterator.splits() when you actually have a split data. If you want to create BucketIterator only for one split e.g. test or train, use BucketIterator only. That means your above case where you only pass test_data should be changed to:
test_iterator = data.BucketIterator(
    test_data,
    sort = True,
    sort_within_batch=True,
    sort_key = lambda x: len(x.Phrase),
    batch_size = BATCH_SIZE,
    device = device)