মকিটো ম্যাচার এবং আদিমগুলির অ্যারে


226

মকিতো দিয়ে, আমি চাই verify()byte[] তার যুক্তি তালিকার সাথে একটি পদ্ধতি কল , তবে কীভাবে এটি লিখতে হয় তা খুঁজে পেলাম না।

 myMethod( byte[] )

আমি শুধু কিছু চাই anyByteArray(), মকিতো দিয়ে এটি কীভাবে করব?


বাইট অ্যারের বিষয়বস্তু কী তা আপনি সত্যিই চিন্তা করেন না? আমি ইউনিট টেস্টিংয়ে এটি অনেক কিছুই দেখতে পাই, যেখানে লোকেরা যে কোনও এক্স () ম্যাচার ব্যবহার করে কারণ তারা সুবিধাজনক, তবে বাস্তবিকভাবে আপনার প্রায় সবসময় যত্ন নেওয়া উচিত যা উত্তীর্ণ হচ্ছে। আপনি যদি এমন কোনও উত্তর ব্যবহার করেন না যা প্রকৃতপক্ষে মানটি ব্যবহার করে তবে আপনি সম্ভবত একটি আসল প্রত্যাশিত যুক্তির সাথে মিল থাকা উচিত।
Matunos

@ মাতুনোস: এটি বিতর্কযোগ্য। যে কোনও ম্যাচার ব্যবহার করে পরীক্ষাগুলি সহজতর করা যায় এবং পরীক্ষার দিকে তাকানো পরবর্তী ব্যক্তি অহেতুক সুনির্দিষ্ট মিলের দ্বারা বিভ্রান্ত হবে না এবং পরীক্ষার আসল উদ্দেশ্যটির দিকে মনোনিবেশ করতে পারে।
মালিক আটাল্লা

@ টিব্রুয়েল: দয়া করে মনে রাখবেন যে জাভাতে প্রতিটি অ্যারে একটি জিনিস an এটি আপনাকে ভিক্ষা করতে সহায়তা করবে।
টমাসজ প্রিজিবিলস্কি 10:57

উত্তর:


424

আমি চেষ্টা করব any(byte[].class)


34
আপনি যদি কোনও নির্দিষ্ট বাইট যাচাই করতে চান [] আপনি ব্যবহার করতে পারেনAdditionalMatchers.aryEq(expectedArray)
জন অক্সলে

5
বা ম্যাচার্স <<বাইট []> যে কোনও ()।
jbyler


12

আমি বরং ব্যবহার করব Matchers.<byte[]>any()। এটি আমার পক্ষে কাজ করেছে।


1
সকলের জন্য সতর্কতা: এখন অবহেলিত হয়েছে তাই আমি ভোট দেওয়া উত্তর মকিতো.নেই যাব (বাইট []। শ্রেণি)
চেক্সপির

10

আমি মুটানোস এবং আলেসিওর সাথে একমত তদুপরি, যে কেউ সম্ভব যতগুলি অভিন্ন পদ্ধতি কলগুলি পরীক্ষা করতে পারে (উত্পাদন কোডে পরবর্তী কলগুলি যাচাই করা, যাচাইকরণের ক্রমটি বিবেচনা করে না)। কোডটি এখানে:

import static org.mockito.AdditionalMatchers.*;

    verify(mockObject).myMethod(aryEq(new byte[] { 0 }));
    verify(mockObject).myMethod(aryEq(new byte[] { 1, 2 }));


0

যখন আর্গুমেন্টগুলি অ্যারে হয় তখন আপনি মকিতো.ই () ব্যবহার করতে পারেন। আমি এটি এর মতো ব্যবহার করেছি:

verify(myMock, times(0)).setContents(any(), any());

0

আমার জন্য কাজ করে ছিল org.mockito.ArgumentMatchers.isA

উদাহরণ স্বরূপ:

isA(long[].class)

যে ভাল কাজ করে।

একে অপরের বাস্তবায়ন পার্থক্য:

public static <T> T any(Class<T> type) {
    reportMatcher(new VarArgAware(type, "<any " + type.getCanonicalName() + ">"));
    return Primitives.defaultValue(type);
}

public static <T> T isA(Class<T> type) {
    reportMatcher(new InstanceOf(type));
    return Primitives.defaultValue(type);
}

-1

আপনি সর্বদা ব্যবহার করে একটি কাস্টম ম্যাচার তৈরি করতে পারেন argThat

Mockito.verify(yourMockHere).methodCallToBeVerifiedOnYourMockHere(ArgumentMatchers.argThat(new ArgumentMatcher<Object>() {
    @Override
    public boolean matches(Object argument) {
        YourTypeHere[] yourArray = (YourTypeHere[]) argument;
        // Do whatever you like, here is an example:
        if (!yourArray[0].getStringValue().equals("first_arr_val")) {
            return false;
        }
        return true;
    }
}));

একটি কাস্টম ম্যাচার লেখার সময়, যখন মকিতো এই ব্যবহারের ক্ষেত্রে পরিচালনা করতে সক্ষম হবে কেবলমাত্র প্রযুক্তিগত debtণ যুক্ত করছে।
লিনাক্সদান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.