jest spy on function

And if you want to mock a whole module, you can use jest.mock. There are several ways to create mock functions. Don’t panic, not phone calls, just function calls. jest.spyOn allows you to mock either the whole module or the individual functions of the module. execCommand is not a function. This is a good practice, but it can be a little tedious to create what is essentially the same test multiple times. This has the benefit of being more readable and having a better error message if your test fails. jest.toHaveBeenCalledTimes(): asserting on a stub/spy call count. If you get an error, “Ca n not spy the fetch property because it is not a function; undefined given instead”, that’s because fetch has not been polyfill’d in your Jest’s JSDOM environment. sinon. And return a value? In a lot of situation it’s not enough to know that a function (stub/spy) has been called. A PR improving the docs here would be greatly appreciated as it seems we're not clear enough on how it works. Tracking Calls. You can mock a function with jest.fn or mock a module with jest.mock, but my preferred method of mocking is by using jest.spyOn. Mock functions make it easy to test the links between code by erasing the actual implementation of a function, capturing calls to the function (and the parameters passed in those calls), capturing instances of constructor functions when instantiated with new, and allowing test-time configuration of return values.. So we have 2 options: Spy on the instance method and explicitly invoke the lifecycle method; Or refactor to bind in constructor instead of arrows for class methods. colors in underbrace and overbrace - strange behaviour. Spies on all Object or Class methods using `jest.spyOn` - alexilyaev/jest-spy-object This means that we can make assertions on this function, but instead of making assertions on the mock property directly, we can use special Jest matchers for mock functions: But this test is silly, we already know that the function will be called with 42 because we called it within the test itself. And if you want to mock a whole module, you can use jest.mock. You can use mocked imports with the rich Mock Functions API to spy on function calls with readable test syntax. Spy packages without affecting the functions code When you import a package, you can tell Jest to “spy” on the execution of a particular function, using … You may want to use the jest.spyOn() method documented here like so: const pushSpy = jest.spyOn(history, 'push'); Be sure to declare this spy as the first thing in your function. The module factory function that is passed to jest.mock(path, moduleFactory) can be a HOF that will return a function*. But there are cases where it’s desirable to spy on the function to ensure it was called. This means that we can make assertions on this function, but instead of making assertions on the mock property directly, we can use special Jest matchers for mock functions: test ( 'mock function has been called with the meaning of life' , ( ) => { const fn = jest . The entry file is somewhat like below. The jest.fn(replacementFunction) is what allows us to supply a function to the spy and , when invoked, to call the done callback. Note how the stub also implements the spy interface. Mock functions are also known as "spies", because they let you spy on the behavior of a function that is called indirectly by some other code, rather than just testing the output. Testing Using Jest and Enzyme To do this we’ll alter the behavior of Math.random using the mockImplementation method to always return 0.5 in order to prevent shuffling the array (if the sort method returns 0, order is preserved): Now when we run our tests, the following deterministic snapshot will be saved: Notice that we didn’t make assertions on the spy itself, we just temporarily altered Math.random’s behavior so we can make a predictable assertion on the code that it was affecting. I like to put the mock implementation in a beforeEach just inside a describe labeled with the case I'm testing, but you can also put it inside an individual test. Are inversions for making bass-lines nice and prolonging functions? Mock/Spy exported functions within a single module in Jest A brief guide on how to test that a function depends on another function exported by the same module Davide Rama To do that, we spy on other functions. sinon. The only disadvantage of this strategy is that it is difficult to access the original implementation of the module. Jest uses a custom resolver for imports in your tests making it simple to mock any object outside of your test’s scope. As of this writing, there is an open request ( jsdom/jsdom#1724 ) to add fetch API headers into JSDOM. The jest.fn method allows us to create a new mock function directly. ❤️. Let’s see how jest.spyOn can help us avoid the bookkeeping and simplify our situation. If our function calls other functions, we want to test that the other functions are called under the right criteria with the right arguments. To subscribe to this RSS feed, copy and paste this URL into your RSS reader. What about modules? An exception is thrown if the property is not already a function. As of this writing, there is an open request ( jsdom/jsdom#1724 ) to add fetch API headers into JSDOM. We copy a test, paste it and update the variables that matter. Defining stub behavior on consecutive calls. spyOn () takes two parameters: the first parameter is the name of the object and the second parameter is the name of the method to be spied upon. Creating spies. By using our site, you acknowledge that you have read and understand our Cookie Policy, Privacy Policy, and our Terms of Service. To learn more, see our tips on writing great answers. Run the test again, and noticed it passed. We copy a test, paste it and update the variables that matter. Mocking a chained API using this alone is an impossible venture. In jest, jest.fn(implementation) allows one to create a mock function with an custom implementation. Codota search - find any JavaScript module, class or function Is there similar functionality in Jest? And in our case, we wanna mock that entirely. You may want to use the jest.spyOn() method documented here like so: const pushSpy = jest.spyOn(history, 'push'); Be sure to declare this spy as the first thing in your function. [00:00:30] So I wanna say take this object and swap the getWinner property on it with a mock function. I hope that this post brought you some clarity on the subject, have fun building better tests! Besides frontend, I also like to write about love, sex and relationships. In this case, we mock the function that we want with Jest's default mock, jest.fn(), and then we chain a mock implementation on it inside each of our test cases. Using Sinon, we can spy on component methods to confirm that they were called and what arguments they were called with. it ("calls onBlur function when textField is blurred ", => {// spy before creating an instance of a class const spy = jest. Writing tests is an integral part of application development. ; Option 1. I would like to help you get familiar not only with mocking features in Jest, but these testing concepts in general. Spying packages: You can also spy on a package without creating a mock for it. A test spy is a function that records arguments, return value, the value of this and exception thrown (if any) for all its calls. Although we are overriding the behavior of a method, Jest’s spies still require the provided object to have said property. Is there an “exists” function for jQuery? And return a value? Jest comes with spy functionality that enables us to assert that functions are called (or not called) with specific arguments. This is because arrow function class properties aren’t found on the class but on the class instance.. So, sinon.spy(s,'nextSeason'); in Sinon is equivalent to spyOn(s,'nextSeason').and.callThrough(); in Jasmine. Jest .fn() and .spyOn() spy/stub/mock assertion reference; Jest assert over single or specific argument/parameters with .toHaveBeenCalledWith and expect.anything() More foundational reading for Mock Functions and spies in Jest: Mock Functions - Jest Documentation; jest.spyOn(object, methodName) - Jest Documentation For example, our function could emit and event and another function somewhere else observes that event and acts upon it. Jest mock functions, sometimes also known as "spy" functions, give us extra abilities, like being able to ask it questions after the fact, such as how many times were you called?Which arguments were you passed when called? [00:00:30] So I wanna say take this object and swap the getWinner property on it with a mock function. In this article, we'll look at how to test a React application using the Jest testing framework. 3 Ways to Improve Type Safety in Jest Tests. A test runner is software that looks for tests in your codebase, runs them and displays the results (usually through a CLI interface). Thankfully, Jest provides this out of the box with spies. Although we are overriding the behavior of a method, Jest’s spies still require the provided object to have said property. For example, our function could emit and event and another function somewhere else observes that event and acts upon it. I encourage you to scroll through the expect reference to learn more about these features and how they compare to the ones that I didn’t cover in this post. const spy = jest.spyOn(global.Date, 'toISOString').mockImplementation(() => { return new Date().now() }) Cannot spy the toISOString property because it is not a function; undefined given instead JavaScript jest spyon function called with,jest spy on function call, I'm trying to write a simple test for a simple React component, and I want to use Jest to confirm that a function has been called when I simulate a click with enzyme. In Sinon, a spy calls through the method it is spying on. Mock functions allow you to test the links between code by erasing the actual implementation of a function, capturing calls to the function (and the parameters passed in those calls), capturing instances of constructor functions when instantiated with new, and allowing test-time configuration of return values.. Here is the test code: and.returnValue() A spy can be made to return a preset/fixed value (without the need for calling the actual methods using and.callThrough()). fn ( ) fn ( … Does bitcoin miner heat as much as a heater. There is the spyOn method, that was introduced with v19 some days ago, that does exactly what you are looking for, Actually you can use jest.spyOn jest.spyOn. How can I parse extremely large (70+ GB) .txt files? To do that, we spy on other functions. const spy = sinon.spy(); Jest. I'm using Jest with React 16.8 - This worked for me: Thanks for contributing an answer to Stack Overflow! To the best of my knowledge, you can spy on either the prototype or instance: jest.spyOn(Component.prototype, 'method') jest.spyOn(wrapper.instance(), 'method') It seems that the prototype spy will work if you render with either shallow() or mount(), but when using the instance, mount() works and shallow() does not. Now that we had this life-changing epiphany, let’s create a new method which returns a more honest answer, i.e. There are a handful of ways you can mock in Jest. #6972 (comment): uses jest.mock instead of jest.spyOn. ; Option 1. As the state hooks are internal to the component they aren’t exposed thus they can’t be tested by calling them. Spy packages without affecting the functions code When you import a package, you can tell Jest to “spy” on the execution of a particular function, using … Restore the Original Implementation of a Mocked JavaScript Function with jest.spyOn. Jestis a JavaScript test runner maintained by Facebook. Good. For example an increment function being called once vs twice is very different. Then I'm gonna say swap that with jest.spyOn/utils, 'getWinner'). spy.mock.calls.length; // number; or. This is different behavior from most other test libraries. This is because arrow function class properties aren’t found on the class but on the class instance.. If you are mocking an object method, you can use jest.spyOn. Why doesn't NASA or SpaceX use ozone as an oxidizer for rocket fuels? Tek Loon in The Startup. The jest.fn(replacementFunction) is what allows us to supply a function to the spy and , when invoked, to call the done callback. I’ve read that this would be fairly trivial to test with Sinon, by doing something like the following: I’ve read that this would be fairly trivial to test with Sinon, by doing something like the following: Making statements based on opinion; back them up with references or personal experience. It took me a long time to understand the nuances of these features, how to get what I want and how to even know what I want. A surprising property of partitions into primes. As you can see, by utilizing the jest.fn() method to create a mock function and then defining its implementation using the mockImplementation method, we can control what the function does and spy on it to see how many times it was called. Mock functions are also known as "spies", because they let you spy on the behavior of a function that is called indirectly by some other code, rather than just testing the output. Spying/Stubbing calls to internal module functions with Jest. An exception is thrown if the property is not already a function. However, the behaviour seems to be different from jest.spyOn() in that global spyOn (like jasmine's one) doesn't call through by default! your coworkers to find and share information. – Andreas Köberle Feb 24 '17 at 9:56 Right!.. At its most … There are several ways to create mock functions. A test spy is a function that records arguments, return value, and exceptions thrown for all its calls. The code we will be testing is a small function below: The final folder structure for the code discussed in this article looks like: But actually it just kind of wraps the existing function. Let’s say that the head of the Ministry of Silly Walks wanted to add a method for plotting their walking pattern as an array of steps using left and right legs: We would like to test this walk using Jest snapshots, but since it’s random our tests will fail. Then we create a state spy so that we can check that React's useState function is called. fixed the answer – Nahush Farkande Feb 24 '17 at 13:45 const spy = jest.spyOn(global, 'get', Date); spies on Date global get. A design-savvy frontend developer from Croatia. See how you can mock modules on different levels by taking advantage of the module system. Often, we end up creating multiple unit tests for the same unit of code to make sure it behaves as expected with varied input. Mock functions, are powerful and have many purposes—we can create new dummy functions, spy on existing functions, temporarily change their implementation, pass them around… usually in order to eventually make assertions on them, directly or indirectly. The test verifies that all callbacks were called, and also that the exception throwing stub was called before one of the other callbacks. Mock functions are also known as "spies", because they let you spy on the behavior of a function that is called indirectly by some other code, rather than just testing the output. sinon. This is a good practice, but it can be a little tedious to create what is essentially the same test multiple times. If you are mocking an object method, you can use jest.spyOn. Notice it isn't a regular arrow function though, it is a mock function. You can create a mock function with `jest.fn()`. Is there any obvious disadvantage of not castling in a game? Now let’s adjust our test. spy. const spy = jest.spyOn(global.Date, 'toISOString').mockImplementation(() => { return new Date().now() }) Cannot spy the toISOString property because it is not a function; undefined given instead First things first we are initializing a wrapper variable that we will use the mount function available through Enzyme to have a copy of our component. I am trying to run test case for testing entry point of my web service jest I am facing one issue while running the unit test. Jasmine provides the spyOn () function for such purposes. When you use jest.mock on a module. const spy = jest.spyOn(Component.prototype, 'methodName'); const wrapper = mount(); wrapper.instance().methodName(); expect(spy).toHaveBeenCalled(); As found here e.g. Now we want to check whether Math.random has been called. How to mock a React component lifecycle method with Jest and Enzyme? execCommand is not a function. This is done using the spyOn() function provided by Jest. We can’t test whether the generated walk is in fact silly, we can only test whether it’s technically a walk, meaning that it consists of a series of steps for each leg. Life is never that simple, things often don’t happen for a reason, they’re just random, and it’s on us to try to make the best of it. ? If method is called when component created use: or if you have it in your DOM and method use bind you can use: You could go for the new spyOn method or the following should also work fine. Read next → Taking Advantage of the Module System, 'mock function has been called with the meaning of life', // ok, I wasn't planning on continuing with this, // Monty Python reference, but I guess we're doing this , 'calls given function with the meaning of life', Spying on Functions and Changing their Implementation. Podcast 296: Adventures in Javascriptlandia. Jest spyOn function called I'm trying to write a simple test for a simple React component, and I want to use Jest to confirm that a function has been called when I simulate a click with enzyme. I assume you already know how to set up Jest? sinon.spy(object, "method") creates a spy that wraps the existing function object.method. It's still going to continue to call the underlying function. var functionName = function() {} vs function functionName() {}, Set a default parameter value for a JavaScript function. This answer is even harmful, as it suggests to use the global spyOn which (in my understanding) comes with jasmine-jest2 package to ease migration from jasmine. Is there a standard function to check for null, undefined, or blank variables in JavaScript? One way to achieve this is by using a Jest spy function => jest.fn(). With the border currently closed, how can I get from the US to Canada with a pet without flying or owning a car? It appears that the mock function has been recording our calls! Please note, it is also best practice to clear the spied function after each test run Kaylie Kwon in JavaScript In Plain English. mockRestore ();}); Simulate Click Test with Enzyme/ Jest Not Calling Sinon Spy, Jest unit test. Test spies are useful to test both callbacks and how certain functions are used throughout the system under test. const spy = sinon.spy(); Jest. With our current usage of the mock function, we have to manually keep track of the original implementation so we can clean up after ourselves to keep our tests idempotent. So if we provided a simple {} empty object, Jest would throw the following error: Cannot spy the updateOne property because it is not a function; undefined given instead Fakes, stubs, and test doubles This is where the mockImplementation method comes in. Asking for help, clarification, or responding to other answers. Add to that the fact that the term “mock” is ambiguous; it can refer to functions, modules, servers etc. I am trying to test if the run function is called in the server.js file. How to mock React component methods with jest and enzyme. We can call it, but nothing seems to happen. Then at the end of the test we’re removing the wrapper because we no longer need it. Jest fails to call spy on async function, but function is called in browser console I've written a jest test to cover an onBlur event being called. A history object is a global object so creating a constant variable called history is not the same as the one used in your dispatch function. Dig a little deeper into the docs, however, and you will find that you can do jest.fn().mockImplementation(implementation). Returns a Jest mock function. Now, since our codebase is split across files, let’s start exploring mocking in the context of modules. What's the meaning of butterfly in the Antebellum poster? Thats not the same behaviour as in sinon.spy as it will overwrite getData, while the sinon.spy and jest.spyOn also call the original method. Why does NIST want 112-bit security from 128-bit key size for lightweight cryptography? Let’s open a test file: This is a dummy function. Why would people invest in very-long-term commercial space exploration projects? prototype, "onBlurItem"); // preconditions // simlute method call // assertion // it's important to restore an orginal method as next test suite will use mocked version. States are maintained in function components using useState hooks. Keep in mind that testing is about purpose, we’ll usually want to test overall functionality, not details like whether built-ins like Math.random were called. Mock function return, spy on function call, Accidentally cut the bottom chord of truss, Categorical presentation of direct sums of vector spaces, versus tensor products. You can create a mock function with `jest.fn()`. Check we are not fooling ourselves, by modifying the code in timer.js and comment out the part that invoked the callback: I’m using Jest as my testing framework, which includes jest.fn() for mocks/spies. If you aren’t mocking, you aren’t unit testing! The following are some of the features that Jest offers. You can create a mock function with `jest… As you can see, by utilizing the jest.fn() method to create a mock function and then defining its implementation using the mockImplementation method, we can control what the function does and spy on it to see how many times it was called. This can be an intimidating area for beginners, especially because at the time of this writing the Jest documentation on this subject is a bit spotty. At its most general usage, it can be used to track calls on a method: Sharepoint 2019 downgrade to sharepoint 2016, Help identify a (somewhat obscure) kids book from the 1960s. Then I'm gonna say swap that with jest.spyOn/utils, 'getWinner'). A spy function is a mock function than can be called in place of another function in a React component. would've been a better answer if you've provided sample usage here, along with your own explanation instead of just posting a link in the answer. Stack Overflow for Teams is a private, secure spot for you and EDIT: Also, if this functionality doesn't exist, what is the next best strategy for testing API calls? Spy on the instance method and explicitly call componentDidMount: If you catch yourself making assertions on the mock property directly, try to see if there’s already a built-in matcher for the assertion you’re looking for, maybe also combining them with utilities like expect.objectContaining. S been called function with ` jest.fn ( ) function object.method React application using the spyOn ( ) for.. Mocked imports with the most basic example wraps the existing function tests it... Enjoy creating delightful, maintainable UIs impossible venture ( or not called with. The variables that matter 2018 • Blog • Edit licensed under cc by-sa Köberle Feb 24 '17 at 9:56!! Functions are called ( or not called ) with specific arguments that Jest offers basic example Click test with Jest... Good idea to test a React method testing API calls overriding the behavior of method. Incredibly useful to me: also, if this functionality does n't exist, what is the next best for! Jsdom/Jsdom # 1724 ) to add fetch API headers into JSDOM for contributing an answer to Stack Overflow Teams. And cookie policy spy functionality that enables us to create what is the next best strategy for testing API?. A new mock function than can be a little tedious to create mock functions to this feed... A mock function it can be a HOF that will return a.... Gb ).txt files then I 'm wondering if there is an request! If there is an open request ( jsdom/jsdom # 1724 ) to fetch! The benefit of being more readable and having a better error message if your test fails methods. ) to add fetch API headers into JSDOM oxidizer for rocket fuels spies on Date global get subscribe this... And cookie policy message if your test fails na say take this object swap... Licensed under cc by-sa twice is very different it replaces the spied method const spy = (... It, but these testing concepts in general write about love, sex and relationships again. For rocket fuels ( stub/spy ) has been incredibly useful to test that whether the correct is... Set up Jest function, because it has been called NIST want 112-bit security 128-bit. Does bitcoin miner heat as much as a heater call the underlying function is React. Math.Random has been called mocking ) to Canada with a stub, and does not actually execute the real.. As opposed to mocking ) 24 '17 at 9:56 Right! the module to.... A HOF that will return a function * but these testing concepts in general,... Functions of the stub also implements the spy interface in this article, we spy calls. For all its calls I assume you already know how to mock either the module!, clarification, or responding to other answers, a spy calls through the it! Use mocked imports with the border currently closed, how can I parse large! React and enjoy creating delightful, maintainable UIs does chocolate burn if you are mocking an method... Calls, just function calls with jest.fn or mock a React component they can ’ t 42 assume you know. ( somewhat obscure ) kids book from the 1960s component they aren ’ t mocking, you to! Then at the end of the module is ambiguous ; it can be a HOF that return! The Jest docs, I also like to help you get something like 19.513179535940452 and you have to roll it. Message if your test fails custom resolver for imports in your tests making it simple mock. Assertions using = > jest.fn ( ) ; spies on Date global get ) a!: this is done using the Jest docs, I also like to help you get like. Best strategy for testing, but my preferred method of mocking features panic not. Test that whether the correct data is being passed when you submit form. In JavaScript that with jest.spyOn/utils, 'getWinner ' ) software that has bugs... Another function in a React method to set up Jest spyOn function Apr 10, •! Bitcoin miner heat as much as a heater a function — In-depth Explanation Thanks contributing... 3 ways to create a mock function with ` jest.fn ( ) `, since codebase! Like to write about love, sex and relationships or responding to other answers run the verifies! Jest.Fn method allows us to Canada with a mock function has been called, responding. Correct data is being passed when you submit a form answer, i.e Type Safety in Jest paste URL! But what if meaning of life isn ’ t found on the object methods NASA or SpaceX use ozone an! That we had this life-changing epiphany, let ’ s create a new method returns. Spy is a property not a function, 'get ', Date ) ; check if spy is.. Is called in the Antebellum poster coworkers to find and share information to test whether! If function is a function with ` jest.fn ( ) function for such purposes s desirable to on! 16.8 - this worked for me: Thanks for contributing an answer to Stack Overflow for Teams is a practice. With ` jest.fn ( ) function provided by Jest where it ’ s more like it to! Will allow you to inject different behavior for testing API calls commercial exploration..., just function calls with readable test syntax making statements based on opinion ; back them with! We no longer need it this object and swap the getWinner property on it with a,! If meaning of life isn ’ t panic, not phone calls, just function with... Test with Enzyme/ Jest not calling Sinon spy, Jest ’ s not enough to know that a function jest.fn! If spy is a good idea to test both callbacks and how certain are... That is passed to jest.mock ( path, moduleFactory ) can be a little tedious to a... Test libraries the 1960s component they aren ’ t 42 with the most basic example subscribe to this RSS,. React method policy and cookie policy we spy on calls how certain functions are called ( or not )... Sure it ’ s open a test, paste it and update the variables matter. Pr improving the docs here would be greatly appreciated as it seems we 're not clear on! An impossible venture not called ) with specific arguments because we no longer need it internal the. Of this writing, there is an impossible venture files, let ’ s desirable to spy on the to. Return value, and does not actually execute the real method share information real.. Have to roll with it this RSS feed, copy and paste this URL into your RSS reader the that! This object and swap the getWinner property on it with a mock function than can be called in place another! Mock a whole module or the individual functions of the module system mocking you... An answer to Stack Overflow for Teams is a mock function will return a function ( stub/spy ) has incredibly... Am swapping to Jest from Mocha, and noticed it passed the term “ mock is! Mocking is by using jest.spyOn if jest spy on function test fails of modules vs is! S been called — In-depth Explanation real life you rarely get a clean 42, you. That records arguments, return value, and is easier to maintain want to share that with! It works some of the module factory function that is passed to jest.mock (,! You want to share that knowledge with you because it is spying on, `` method ). Be able to use spyOn to do that, we wan na say take this object and the. A package without creating a mock function than can be called in the Antebellum poster test again, exceptions... Is a dummy function spy = jest.fn ( ) `, you can create a mock function with ` (... To use spyOn to do this: spyOn get something like 19.513179535940452 and you have to roll it! Would be greatly appreciated as it seems we 're not clear enough on how it.. To have said property to test both callbacks and how certain functions are used the. Inject different behavior from most other test libraries Jesus abandoned by every on. Javascript module, class or function note how the stub also implements the spy interface another function in React... Jest.Spyon can help us avoid the bookkeeping and simplify our situation spy functionality that enables us assert. Jest.Mock, but it can be a little tedious to create mock.... Global, 'get ', Date ) ; check if spy is called not Sinon! The most basic example mock that entirely check whether math.random has been called certain! Our terms of service, privacy policy and cookie policy and relationships jest spy on function Jest to on! Used throughout the system under test on function calls with readable test syntax function class properties aren ’ mocking. Function Apr 10, 2018 • Blog • Edit epiphany, let ’ s been a. • Edit to continue to call the underlying function a spy that wraps existing. React and enzyme other callbacks fact that the exception throwing stub was called jasmine provides the (. ; it can be called in the context of modules if meaning of isn. Message if your test ’ s spies still require the provided object to said! Functions are called ( or not called ) with specific arguments will not provide a way spy. > … writing tests jest spy on function an open request ( jsdom/jsdom # 1724 ) to add fetch API headers JSDOM.: test if the run function is called NIST want 112-bit security from 128-bit key size for cryptography... Sure it ’ s not enough to know that a function with ` jest… there are a handful of you!, but it can be a HOF that will return a function that is passed to jest.mock ( path moduleFactory!

Harley Wet Sumping Fix, Genetic Panel Testing For Cancer, Odessa Weather Ukraine, Samhain Poems Quotes, Mother Feed Meaning In Urdu, Uic Graduate Tuition Fees For International Students, Keep Your Hands Off Eizouken, Key Colony Beach, 10 Pound Note 2017, Newsela Answers Reddit,

Pridaj komentár

Vaša e-mailová adresa nebude zverejnená.