জেসমিন গুপ্তচর একাধিক কলের জন্য কীভাবে পৃথক ফেরতের মান থাকতে পারে


103

বলুন আমি এই জাতীয় পদ্ধতিতে গুপ্তচরবৃত্তি করছি:

spyOn(util, "foo").andReturn(true);

পরীক্ষার অধীনে ফাংশন util.fooএকাধিকবার কল করে।

গুপ্তচরকে trueপ্রথমবার বলা হয়ে ফিরে falseআসা কি দ্বিতীয় বার ফিরে আসা সম্ভব? নাকি এ নিয়ে যাওয়ার আলাদা উপায় আছে?

উত্তর:


170

আপনি spy.and.returnValues (জেসমিন ২.৪ হিসাবে) ব্যবহার করতে পারেন ।

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

describe("A spy, when configured to fake a series of return values", function() {
  beforeEach(function() {
    spyOn(util, "foo").and.returnValues(true, false);
  });

  it("when called multiple times returns the requested values in order", function() {
    expect(util.foo()).toBeTruthy();
    expect(util.foo()).toBeFalsy();
    expect(util.foo()).toBeUndefined();
  });
});

এমন কিছু বিষয় আছে যা সম্পর্কে আপনাকে অবশ্যই যত্নবান হতে হবে, অন্য একটি ফাংশন রয়েছে একই রকম বানান returnValueছাড়াই s, আপনি যদি এটি ব্যবহার করেন তবে জুঁই আপনাকে সতর্ক করবে না।


22
+1: এটি একটি দুর্দান্ত বৈশিষ্ট্য। সতর্কতার একটি শব্দ, যদিও - 'গুলি' এর মধ্যে ভুলতে ভুলবেন না .returnValues- এই দুটি ফাংশন স্পষ্টতই আলাদা, তবে একাধিক যুক্তি পাস করার ফলে .returnValueকোনও ত্রুটি ছুঁড়ে না। সেই এক চরিত্রের কারণে আমি কতটা সময় নষ্ট করেছি তা স্বীকার করতে চাই না।
ডিআইএমএম রিপার

@ ডিডিএমএমইপার, আপনাকে ধন্যবাদ আমি এখন এটি উল্লেখ।
মহাসাগর

পূর্ববর্তী প্রতিটি কাজটি করা আমার পক্ষে গুরুত্বপূর্ণ ছিল, পরীক্ষায় নয় (এটি)
ইয়ান

অবশ্যই টাইপস্ক্রিপ্টে জুঁই ব্যবহার করার সময় বানান ত্রুটিগুলি নিয়ে চিন্তা করার দরকার নেই।
যুদ্ধের মতো শিম্পাঞ্জি

27

জেসমিনের পুরানো সংস্করণগুলির জন্য, আপনি spy.andCallFakeজেসমিন ১.৩ এর spy.and.callFakeজন্য বা জেসমিন ২.০ এর জন্য ব্যবহার করতে পারেন এবং আপনাকে 'ডাকা' অবস্থার উপর নজর রাখতে হবে, হয় সাধারণ বন্ধের মাধ্যমে, বা বস্তুর সম্পত্তি ইত্যাদি track

var alreadyCalled = false;
spyOn(util, "foo").andCallFake(function() {
    if (alreadyCalled) return false;
    alreadyCalled = true;
    return true;
});

4
আমরা এর মতো 2 টিরও বেশি কলের জন্য এটি প্রসারিত করতে পারি: var ফলাফল = [সত্য, মিথ্যা, "foo"]; var কলকাউন্ট = 0; স্পাইঅন (ইউজার, "ফু") and এবং সব ফ্যাক (ফাংশন () {ফলাফলগুলি ফেরান [কলকাউন্ট ++];});
জ্যাক 14

4
এটি এর মতো জেনেরিক ফাংশনে বাড়ানো যেতে পারে: ফাংশন রিটার্নভ্যালু () ar var আরগস = আর্গুমেন্ট; var কলকাউন্ট = 0; রিটার্ন ফাংশন () {রিটার্ন অর্গস [কলকাউন্ট ++]; }; }
টমাস লাইবারকন্ড

আপনি কেবল ফলাফল.শফিট () ফিরিয়ে দিতে পারবেন কেন এই কোডটি সম্পূর্ণ?
ThaFog

কীভাবে আমরা পর্যবেক্ষণগুলি ফিরে
আসি

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