চই: 'should' সিনট্যাক্সের সাথে কীভাবে অপরিজ্ঞাত পরীক্ষা করা যায়


96

উপর নির্মাণের এই টিউটোরিয়াল চা সঙ্গে একটি angularjs অ্যাপ পরীক্ষা, আমি একটি অনির্ধারিত মান "উচিত" শৈলী ব্যবহার করার জন্য একটি পরীক্ষা যোগ করতে চান। এটি ব্যর্থ:

it ('cannot play outside the board', function() {
  scope.play(10).should.be.undefined;
});

ত্রুটির সাথে "TypeError: সম্পত্তি 'should should' und परिभाषित করা যায় না, তবে" প্রত্যাশা "শৈলীর সাথে পরীক্ষাটি পাস হয়:

it ('cannot play outside the board', function() {
  chai.expect(scope.play(10)).to.be.undefined;
});

আমি "এটি" দিয়ে কীভাবে কাজ করব?


4
আপনি যদি " assert.isUndefined(scope.play(10))
দৃsert়তা

উত্তর:


80

এটি উচিত সিনট্যাক্সের অন্যতম অসুবিধা। এটি সমস্ত অবজেক্টের উচিত সম্পত্তি যুক্ত করে কাজ করে, তবে যদি কোনও ফেরতের মান বা ভেরিয়েবলের মানটি সংজ্ঞায়িত করা হয়, তবে সম্পত্তি ধরে রাখার জন্য কোনও বস্তু নেই।

ডকুমেন্টেশন কিছু সমাধান নীচে উপস্থিত, উদাহরণস্বরূপ দেয়:

var should = require('chai').should();
db.get(1234, function (err, doc) {
  should.not.exist(err);
  should.exist(doc);
  doc.should.be.an('object');
});

14
should.not.existমানটি যদি সঠিক হয় তবে nullএই উত্তরটি সঠিক নয় valid @daniel নিচে উত্তর আছে: should.equal(testedValue, undefined);। এটি গ্রহণযোগ্য উত্তর হওয়া উচিত।
সেবাস্তিয়ান

7
আমি মাসিক ভিত্তিতে এই উত্তরটিতে (ডকস নয় 🙈) এ এসেছি :-)
রাল্ফ কাউলিং

54
should.equal(testedValue, undefined);

চেই ডকুমেন্টেশন হিসাবে উল্লিখিত


12
ওম, এখানে কী বোঝাতে হবে? আপনি পরীক্ষিত ভ্যালুটি === অপরিজ্ঞাত বলে আশা করেন যাতে আপনি এটি পরীক্ষা করেন। প্রচুর বিকাশকারী প্রথমে পরীক্ষিতভ্যালুকে প্রথমে রেখে তারপরে এটি শৃঙ্খলাবদ্ধ করে ত্রুটি দিয়ে শেষ করে ...
ড্যানিয়েল

5
এটি বাক্সটির বাইরে কাজ করে না এবং এটির জন্য API ডকুমেন্টেশনে এটি.equal() খুঁজে পাওয়া যায় না । আমি বুঝতে পারি যে @ আমাদের মনন বনানাস কেন ব্যাখ্যা চেয়েছিলেন। এটি প্রত্যাশিত শৃঙ্খলিত পদ্ধতি ফর্মের পরিবর্তে প্রত্যাশিত মানটির জন্য একক যুক্তি স্বীকার করে ফাংশন হিসাবে দুটি আর্গুমেন্ট হিসাবে গ্রহণ করা উচিত unexpected আপনি কেবলমাত্র .should()ডেভিডনর্ম্যান কর্তৃক গৃহীত উত্তর এবং এই ডকুমেন্টেশনে বর্ণিত হিসাবে একটি চালিত সংস্করণ আমদানি / প্রয়োজনীয় এবং অর্পণ করে এটি অর্জন করতে পারেন ।
গুলফ্লাম

আমি মনে করি আপনি খুঁজে পাবেন যে .equalসিনট্যাক্সটি আরও ভাল ত্রুটি বার্তাগুলি তৈরি করে কারণ এটি আপনাকে বার্তাগুলি আউটপুট করতে দেয় যা জিনিসগুলি ব্যর্থ হলে আরও বর্ণনামূলক
jcollum

17

অপরিশোধিত জন্য পরীক্ষা

var should = require('should');
...
should(scope.play(10)).be.undefined;

নাল জন্য পরীক্ষা

var should = require('should');
...
should(scope.play(10)).be.null;

মিথ্যাচারের জন্য পরীক্ষা করা, অর্থাৎ শর্তে এটি মিথ্যা হিসাবে বিবেচিত

var should = require('should');
...
should(scope.play(10)).not.be.ok;

বিশেষভাবে দরকারী বা স্বজ্ঞাত নয়, তবে এটি চালাক!
thebenedict

4
দরকারী না? এটি বিডিডি স্টাইল আইএমওতে অপরিজ্ঞাত পরীক্ষার সেরা উত্তর, তবে এটির জন্য অন্যান্য এনপিএম প্যাকেজ ইনস্টল করতে হবে (প্যাকেজটি হওয়া উচিত), এবং আমি কেবল এটির জন্য অন্যান্য প্যাকেজ ইনস্টল করার উপযুক্ত বলে মনে করি না, যদিও দুর্দান্ত উত্তর
ওয়াগনার লিওনার্দি


8

আমি অনির্ধারিত পরীক্ষার জন্য স্টেট স্টেটমেন্টটি লিখতে সংগ্রাম করেছি। নিম্নলিখিত কাজ করে না।

target.should.be.undefined();

আমি নিম্নলিখিত সমাধানগুলি খুঁজে পেয়েছি।

(target === undefined).should.be.true()

এটি যদি টাইপ চেক হিসাবেও লিখতে পারে

(typeof target).should.be.equal('undefined');

উপরেরটি সঠিক উপায়ে কিনা তা নিশ্চিত নন তবে এটি কাজ করে।

গিথুবে ভূত থেকে পোস্ট অনুসারে


4
এটি লক্ষণীয় যে এই সিনট্যাক্সটি ব্যবহার করার ফলে জাভাস্ক্রিপ্ট পূর্ববর্তী লাইনের একটি ফাংশন হিসাবে আকাঙ্ক্ষিত করার প্রচেষ্টা হিসাবে (যদি আপনি একটি অর্ধবৃত্ত দিয়ে রেখাগুলি শেষ না করে থাকেন) ব্যাখ্যা করতে পারে।
বমাকনফটন

5

এটা চেষ্টা কর:

it ('cannot play outside the board', function() {
   expect(scope.play(10)).to.be.undefined; // undefined
   expect(scope.play(10)).to.not.be.undefined; // or not
});

ধন্যবাদ, তবে আমি উপরের দ্বিতীয় প্রয়াসে এটি করছি। আমি কিভাবে এটা করবেন সঙ্গে করে বুঝতে চাই উচিত সিনট্যাক্স।
thebenedict

2

কীওয়ার্ড haveএবং notসংশ্লেষ সম্পর্কে ভুলে যাবেন না :

const chai = require('chai');
chai.should();
// ...
userData.should.not.have.property('passwordHash');

1

@ ডেভিড-নরমানের ডকুমেন্টেশন অনুসারে উত্তরটি সঠিক, আমার সেটআপ নিয়ে কয়েকটি সমস্যা ছিল এবং পরিবর্তে নিম্নলিখিতটির জন্য বেছে নিয়েছি।

(টাইপ অফ স্কোপ.প্লে (10))। should.be.und परिभाषित;


typeofঅপারেটর একটি স্ট্রিং ফেরত ; সুতরাং এই দাবিটি পাস করা যায়নি; Cuz'undefined' !== undefined
dNitro

0

আপনি আপনার ফাংশন ফলাফলটি মোড়ানো করতে should()এবং "অপরিজ্ঞাত" ধরণের জন্য পরীক্ষা করতে পারেন :

it ('cannot play outside the board', function() {
  should(scope.play(10)).be.type('undefined');
});
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.