How to test some pipeline steps without mock ?
Desired Behavior
I have simple class method wich I want to test :
static def getAllProperties(script,configDir,appId ) {
def envProperties = script.readProperties file: "${configDir}/env.properties"
def props = script.readProperties default: envProperties ,file: "${configDir}/${appId}/env.properties"
props
}
I'm using JenkinsPipelineSpecification to write tests in my project but in this case, readProperties are mocked and test will not detect that I have typo in parameter default. Also, the compiler will not fail. Is it possible to set up a test to fail or somehow configure to really call readProperties step ? Mocking using
1 * getPipelineMock("readProperties")(default:["x":"valueX"],file:"./appId/env.properties") >> ["y" : "valueY"] doesn't help as there is same typo as in the method implementation
Benefits
- Detecting such typos during a test is much more efficient than deploy to Jenkins and test manually
I am not quite sure I understand the question. It sounds like you're asking:
Assuming
- a function takes in a map of arguments
- One of the arguments' names is
default
e.g. getAllProperties(default: ["x": "valueX")
Then
I would like a unit-test failure if my code calls this function with a typo, e.g.
getAllProperties(deflat: ["x": "valueX")
Is that correct?
Yes, that's what I need. There is method readProperties ( from the "Pipeline Utility Steps plugin") which expects "defaults" on input in my example, but I used "default". The test passes because I also used "default" in the getPipelineMock. I would like to find these types of errors/typos before deploying to Jenkins.