[{"data":1,"prerenderedAt":333},["ShallowReactive",2],{"term-m\u002Fmock":3,"related-m\u002Fmock":315},{"id":4,"title":5,"acronym":6,"body":7,"category":296,"description":297,"difficulty":298,"extension":299,"letter":300,"meta":301,"navigation":81,"path":302,"related":303,"seo":309,"sitemap":310,"stem":313,"subcategory":6,"__hash__":314},"terms\u002Fterms\u002Fm\u002Fmock.md","Mock",null,{"type":8,"value":9,"toc":290},"minimark",[10,15,19,23,26,30,279,283,286],[11,12,14],"h2",{"id":13},"eli5-the-vibe-check","ELI5 — The Vibe Check",[16,17,18],"p",{},"A mock is a fake version of something your code talks to. If your code calls a weather API, you don't want real weather in your tests — you use a mock that pretends to be the API and returns whatever you tell it to. Fake, but controllable.",[11,20,22],{"id":21},"real-talk","Real Talk",[16,24,25],{},"A mock is a test double that replaces a real dependency with a programmable fake. You can control what the mock returns and verify how it was called. Mocks are used to isolate the code under test from external dependencies like APIs, databases, or services.",[11,27,29],{"id":28},"show-me-the-code","Show Me The Code",[31,32,37],"pre",{"className":33,"code":34,"language":35,"meta":36,"style":36},"language-javascript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { jest } from '@jest\u002Fglobals';\n\nconst fetchWeather = jest.fn().mockResolvedValue({ temp: 22, unit: 'C' });\n\ntest('displays temperature', async () => {\n  const result = await getWeatherDisplay(fetchWeather);\n  expect(result).toBe('22°C');\n  expect(fetchWeather).toHaveBeenCalledTimes(1);\n});\n","javascript","",[38,39,40,76,83,152,157,186,213,244,269],"code",{"__ignoreMap":36},[41,42,45,49,53,57,60,63,66,70,73],"span",{"class":43,"line":44},"line",1,[41,46,48],{"class":47},"s7zQu","import",[41,50,52],{"class":51},"sMK4o"," {",[41,54,56],{"class":55},"sTEyZ"," jest",[41,58,59],{"class":51}," }",[41,61,62],{"class":47}," from",[41,64,65],{"class":51}," '",[41,67,69],{"class":68},"sfazB","@jest\u002Fglobals",[41,71,72],{"class":51},"'",[41,74,75],{"class":51},";\n",[41,77,79],{"class":43,"line":78},2,[41,80,82],{"emptyLinePlaceholder":81},true,"\n",[41,84,86,90,93,96,98,101,105,108,110,113,116,119,123,126,130,133,136,138,140,143,145,147,150],{"class":43,"line":85},3,[41,87,89],{"class":88},"spNyl","const",[41,91,92],{"class":55}," fetchWeather ",[41,94,95],{"class":51},"=",[41,97,56],{"class":55},[41,99,100],{"class":51},".",[41,102,104],{"class":103},"s2Zo4","fn",[41,106,107],{"class":55},"()",[41,109,100],{"class":51},[41,111,112],{"class":103},"mockResolvedValue",[41,114,115],{"class":55},"(",[41,117,118],{"class":51},"{",[41,120,122],{"class":121},"swJcz"," temp",[41,124,125],{"class":51},":",[41,127,129],{"class":128},"sbssI"," 22",[41,131,132],{"class":51},",",[41,134,135],{"class":121}," unit",[41,137,125],{"class":51},[41,139,65],{"class":51},[41,141,142],{"class":68},"C",[41,144,72],{"class":51},[41,146,59],{"class":51},[41,148,149],{"class":55},")",[41,151,75],{"class":51},[41,153,155],{"class":43,"line":154},4,[41,156,82],{"emptyLinePlaceholder":81},[41,158,160,163,165,167,170,172,174,177,180,183],{"class":43,"line":159},5,[41,161,162],{"class":103},"test",[41,164,115],{"class":55},[41,166,72],{"class":51},[41,168,169],{"class":68},"displays temperature",[41,171,72],{"class":51},[41,173,132],{"class":51},[41,175,176],{"class":88}," async",[41,178,179],{"class":51}," ()",[41,181,182],{"class":88}," =>",[41,184,185],{"class":51}," {\n",[41,187,189,192,195,198,201,204,206,209,211],{"class":43,"line":188},6,[41,190,191],{"class":88},"  const",[41,193,194],{"class":55}," result",[41,196,197],{"class":51}," =",[41,199,200],{"class":47}," await",[41,202,203],{"class":103}," getWeatherDisplay",[41,205,115],{"class":121},[41,207,208],{"class":55},"fetchWeather",[41,210,149],{"class":121},[41,212,75],{"class":51},[41,214,216,219,221,224,226,228,231,233,235,238,240,242],{"class":43,"line":215},7,[41,217,218],{"class":103},"  expect",[41,220,115],{"class":121},[41,222,223],{"class":55},"result",[41,225,149],{"class":121},[41,227,100],{"class":51},[41,229,230],{"class":103},"toBe",[41,232,115],{"class":121},[41,234,72],{"class":51},[41,236,237],{"class":68},"22°C",[41,239,72],{"class":51},[41,241,149],{"class":121},[41,243,75],{"class":51},[41,245,247,249,251,253,255,257,260,262,265,267],{"class":43,"line":246},8,[41,248,218],{"class":103},[41,250,115],{"class":121},[41,252,208],{"class":55},[41,254,149],{"class":121},[41,256,100],{"class":51},[41,258,259],{"class":103},"toHaveBeenCalledTimes",[41,261,115],{"class":121},[41,263,264],{"class":128},"1",[41,266,149],{"class":121},[41,268,75],{"class":51},[41,270,272,275,277],{"class":43,"line":271},9,[41,273,274],{"class":51},"}",[41,276,149],{"class":55},[41,278,75],{"class":51},[11,280,282],{"id":281},"when-youll-hear-this","When You'll Hear This",[16,284,285],{},"\"Mock the payment API so tests don't actually charge cards.\" \u002F \"The mock returns a 500 so we can test the error handling path.\"",[287,288,289],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":36,"searchDepth":78,"depth":78,"links":291},[292,293,294,295],{"id":13,"depth":78,"text":14},{"id":21,"depth":78,"text":22},{"id":28,"depth":78,"text":29},{"id":281,"depth":78,"text":282},"testing","A mock is a fake version of something your code talks to.","beginner","md","m",{},"\u002Fterms\u002Fm\u002Fmock",[304,305,306,307,308],"Stub","Spy","Test Double","Dependency Injection","Unit Test",{"title":5,"description":297},{"changefreq":311,"priority":312},"weekly",0.7,"terms\u002Fm\u002Fmock","2u-DR_J5maOtLXO6xBvGQwBGVTjxktDEbEAmTTtB0Ck",[316,321,324,327,330],{"title":307,"path":317,"acronym":6,"category":318,"difficulty":319,"description":320},"\u002Fterms\u002Fd\u002Fdependency-injection","architecture","intermediate","Instead of your UserService creating its own DatabaseConnection (tight coupling), you pass the database in from outside: new UserService(db).",{"title":305,"path":322,"acronym":6,"category":296,"difficulty":319,"description":323},"\u002Fterms\u002Fs\u002Fspy","A spy is like a double agent — it lets the real function still do its job, but secretly records everything: how many times it was called, with what argumen...",{"title":304,"path":325,"acronym":6,"category":296,"difficulty":298,"description":326},"\u002Fterms\u002Fs\u002Fstub","A stub is like a cardboard cutout of a function. It stands in for the real thing and always gives you the same canned response.",{"title":306,"path":328,"acronym":6,"category":296,"difficulty":319,"description":329},"\u002Fterms\u002Ft\u002Ftest-double","Test double is the umbrella term for anything that replaces a real dependency in a test. Mocks, stubs, spies, fakes — they're all test doubles.",{"title":308,"path":331,"acronym":6,"category":296,"difficulty":298,"description":332},"\u002Fterms\u002Fu\u002Funit-test","A unit test is like checking that one single LEGO brick isn't broken before you use it in your big castle.",1776518295587]