@@ -775,27 +775,82 @@ You can test your resolvers by passing a mocked or actual AppSync Lambda event t
775
775
776
776
You can use either ` app.resolve(event, context) ` or simply ` app(event, context) ` .
777
777
778
- Here's an example from our internal functional test.
778
+ Here's an example of how you can test your synchronous resolvers:
779
779
780
- === "test_direct_resolver .py"
780
+ === "test_resolver .py"
781
781
782
782
```python
783
+ import pytest
784
+ from src.index import app # import the instance of AppSyncResolver from your code
785
+
783
786
def test_direct_resolver():
784
- # Check whether we can handle an example appsync direct resolver
785
- # load_event primarily deserialize the JSON event into a dict
786
- mock_event = load_event("appSyncDirectResolver.json")
787
+ # Load mock event from a file
788
+ json_file = "../../events/appSyncDirectResolver.json"
789
+ fh = open(file)
790
+ mock_event = json.load(fh)
791
+
792
+ # Call the implicit handler
793
+ result = app(mock_event, {})
794
+
795
+ assert result == "created this value"
796
+ ```
797
+
798
+ === "src/index.py"
799
+
800
+ ```python
801
+
802
+ from aws_lambda_powertools.event_handler import AppSyncResolver
803
+
804
+ app = AppSyncResolver()
805
+
806
+ @app.resolver(field_name="createSomething")
807
+ def create_something():
808
+ return "created this value"
809
+
810
+ ```
811
+
812
+ === "appSyncDirectResolver.json"
813
+
814
+ ```json
815
+ --8<-- "tests/events/appSyncDirectResolver.json"
816
+ ```
817
+
818
+ And an example for testing asynchronous resolvers. Note that this requires the ` pytest-asyncio ` package:
787
819
788
- app = AppSyncResolver()
789
820
790
- @app.resolver(field_name="createSomething")
791
- def create_something(id: str):
792
- assert app.lambda_context == {}
793
- return id
821
+ === "test_async_resolver.py"
822
+
823
+ ```python
824
+ import pytest
825
+ from src.index import app # import the instance of AppSyncResolver from your code
826
+
827
+ @pytest.mark.asyncio
828
+ async def test_direct_resolver():
829
+ # Load mock event from a file
830
+ json_file = "../../events/appSyncDirectResolver.json"
831
+ fh = open(file)
832
+ mock_event = json.load(fh)
794
833
795
834
# Call the implicit handler
796
- result = app(mock_event, {})
835
+ result = await app(mock_event, {})
836
+
837
+ assert result == "created this value"
838
+ ```
839
+
840
+ === "src/index.py"
841
+
842
+ ```python
843
+ import asyncio
844
+
845
+ from aws_lambda_powertools.event_handler import AppSyncResolver
846
+
847
+ app = AppSyncResolver()
848
+
849
+ @app.resolver(field_name="createSomething")
850
+ async def create_something_async():
851
+ await asyncio.sleep(1) # Do async stuff
852
+ return "created this value"
797
853
798
- assert result == "my identifier"
799
854
```
800
855
801
856
=== "appSyncDirectResolver.json"
0 commit comments