मैं उदाहरण के लिए जेस्ट के साथ एक समारोह उपहास करने के लिए है, लेकिन केवल अगर यह विशिष्ट तर्क के साथ कहा जाता है, चाहते हैं:क्या मैं जेस्ट का उपयोग करके विशिष्ट तर्कों के साथ कार्यों का नकल कर सकता हूं?
function sum(x, y) {
return x + y;
}
// mock sum(1, 1) to return 4
sum(1, 1) // returns 4 (mocked)
sum(1, 2) // returns 3 (not mocked)
एक समान सुविधा रूबी के RSpec पुस्तकालय में लागू नहीं है:
class Math
def self.sum(x, y)
return x + y
end
end
allow(Math).to receive(:sum).with(1, 1).and_return(4)
Math.sum(1, 1) # returns 4 (mocked)
Math.sum(1, 2) # returns 3 (not mocked)
0123:
मुझे अपने परीक्षणों में प्राप्त करने के लिए कोशिश कर रहा हूँ एक बेहतर decoupling है, मान लीजिए कि मैं एक समारोह है कि sum
पर निर्भर करता है का परीक्षण करना चाहते हैं
function sum2(x) {
return sum(x, 2);
}
// I don't want to depend on the sum implementation in my tests,
// so I would like to mock sum(1, 2) to be "anything I want",
// and so be able to test:
expect(sum2(1)).toBe("anything I want");
// If this test passes, I've the guarantee that sum2(x) is returning
// sum(x, 2), but I don't have to know what sum(x, 2) should return
मुझे पता है की तरह कुछ कर रही द्वारा इस लागू करने के लिए एक तरह से है कि वहाँ:
sum = jest.fn(function (x, y) {
if (x === 1 && y === 2) {
return "anything I want";
} else {
return sum(x, y);
}
});
expect(sum2(1)).toBe("anything I want");
लेकिन यह अच्छा होगा अगर हम इसे आसान बनाने के लिए कुछ चीनी समारोह था होगा।
क्या यह उचित लगता है? क्या हमारे पास जेस्ट में पहले से ही यह सुविधा है?
आपकी प्रतिक्रिया के लिए धन्यवाद।