Created
September 11, 2019 11:00
-
-
Save reyabreu/4c894d55b993c65ea36ecfb133eaf1b3 to your computer and use it in GitHub Desktop.
How to unit test Spel (Spring Expression Language) expressions against standard web context
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@RunWith(SpringRunner.class) | |
@TestPropertySource("classpath:server-test.properties") | |
public class SpelUnitTest { | |
public static final Logger logger = LoggerFactory.getLogger(Sample.class); | |
@Value("${testclock.start}") | |
private String startTime; | |
@Autowired | |
private BeanFactory beanFactory; | |
@Autowired | |
private StandardEvaluationContext _evaluationContext; | |
private ExpressionParser _parser = new SpelExpressionParser(); | |
@Test | |
public void foo() { | |
final String randomPhrase = _parser.parseExpression("T(java.lang.Math).random()") | |
.getValue(_evaluationContext, String.class); | |
logger.info("randomPhrase: random number is {}", randomPhrase); | |
} | |
@Test | |
public void bar() { | |
final Instant value = _parser.parseExpression("T(java.time.Instant).parse('2015-05-15T12:23:45.678Z')") | |
.getValue(_evaluationContext, Instant.class); | |
logger.info("bar: {}", value); | |
} | |
@Test | |
public void fizz() { | |
final Instant value = _parser.parseExpression("T(java.time.Instant).parse(@environment.getProperty('testclock.start'))") | |
.getValue(_evaluationContext, Instant.class); | |
logger.info("fizz: {}", value); | |
} | |
@Test | |
public void buzz() { | |
Assertions.assertThat(startTime).isNotBlank(); | |
logger.info("buzz: {}", startTime); | |
} | |
@TestConfiguration | |
public static class TestConfig { | |
@Bean | |
public BeanFactoryResolver beanFactoryResolver(BeanFactory beanFactory) { | |
return new BeanFactoryResolver(beanFactory); | |
} | |
@Bean | |
public StandardEvaluationContext evaluationContext(BeanFactoryResolver beanFactoryResolver) { | |
final StandardEvaluationContext evaluationContext = new StandardEvaluationContext(); | |
evaluationContext.setBeanResolver(beanFactoryResolver); | |
return evaluationContext; | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment