Skip to content

Commit

Permalink
feat(87): Added information to the README file
Browse files Browse the repository at this point in the history
  • Loading branch information
rcardin committed Dec 20, 2024
1 parent e90fe08 commit e15991a
Showing 1 changed file with 57 additions and 1 deletion.
58 changes: 57 additions & 1 deletion munit-raise4s/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,60 @@

# MUnit Integration for Raise4s

TODO
Integration of the Raise DSL with the MUnit testing framework.

## Dependency

The library is available on Maven Central. To use it, add the following dependency to your `build.sbt` files:

```sbt
libraryDependencies += "in.rcard.raise4s" %% "munit-raise4s" % "0.4.0"
```

The library is only available for Scala 3.

## Usage

The library let you test functions that can raise errors with the `munit` testing framework. Please refer to the [mUnit documentation](https://scalameta.org/munit/) for more general information about the testing framework.

To declare a new test, use the `testR` method available through the `RaiseSuite` test suite. The method accepts a body that can raise errors. For example:

```scala 3
import in.rcard.raise4s.munit.RaiseSuite

class RaiseSuiteSpec extends RaiseSuite {
testR("A test should succeed on successful Raise instances") {
val one: Int raises String = 1
val two: Int raises String = 2
assert(one < two)
}
}
```

If the body raises an error, the test will fail with the error message. For example, the following test fails:

```scala 3
testR("A test should fail on failed Raise instances") {
val one: Int raises String = Raise.raise("An error occurred")
val two: Int raises String = 2
assert(one < two)
}
```

The message we receive is:

```
munit.FailException: Expected the test not to raise any errors but it did with error 'An error occurred'
```

If you want to test if a block raises an error and you want to assert some properties on the error, you can use the `in.rcard.raise4s.munit.RaiseAssertions.interceptR` method:

```scala 3
testR("intercept assertion should succeed on a raised error") {
val error: String = interceptR[String] {
Raise.raise("An error occurred")
}
assertEquals(error, "An error occurred")
}
```

0 comments on commit e15991a

Please sign in to comment.