temporalio / temporalio/sdk-java
Workflow instance should be accessible in test environment for simple assertion
Nobody has claimed this yet.
- Dominant language
- Java
- Stars
- 433
- Forks
- 249
- Avg merge
- 5d 6h
- Merged PRs (30d)
- 26
Description
Is your feature request related to a problem? Please describe.
I would like to write unit tests on workflow code, and would like to access workflow for assertions in test env.
eg.
class WorkflowImpl implements Workflow {
public String value = "something";
//// more workflow code
}
and the value is updated in the workflow code. I would like to add access the values.
Currently there is no easy way to access the workflow object, as we simply register workflow class as type
Describe the solution you'd like
I would like to access the workflow object at any point in time for test env, and it should provide me an object of workflow with latest state of workflow.
Like
var workflowImpl = (WorkflowImpl) testWorkflowClient.getWorkflowObject("workflowId", "workflowRunId");
assertThat(workflowImpl.value, is("some-assertion-value"));
Describe alternatives you've considered
The other method we have considered is to add a QueryMethod in the workflow but we don't want to add QueryMethod in production code at all.
We can surely do it for tests as well as mentioned at https://temporalio.slack.com/archives/CTT84KXK9/p1747167261307199?thread_ts=1747086843.705119&cid=CTT84KXK9, but it can cause issues when you have multiple variables, and adding QueryMethod for each a lot, and managing QueryMethod for testing can be cumbersome.
Additional context
Discussed this previously at Github - https://temporalio.slack.com/archives/CTT84KXK9/p1747086843705119
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
No files or tests are named. Start by reviewing the test environment and testWorkflowClient API described in the issue, then determine how a workflow instance with its latest state could be exposed without production QueryMethods. Done means a test can retrieve the workflow by workflow ID and run ID and assert its current state.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- backend, distributed-systems
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100