startest
🌠 A testing framework to help you shoot for the stars.
Installation
gleam add --dev startest
Features
- Write tests using the
describe
API or as standalone functions - Filter tests by file path or test name
- Pretty assertions from
expect
matchers
Usage
import startest.{describe, it}
import startest/expect
// Inside of `test/my_project_test.gleam`:
pub fn main() {
// Call `startest.run` inside of your `main` function.
// Here we're using the default config, but you can customize this, as needed.
startest.run(startest.default_config())
}
// Tests can be expressed using the `describe` API:
pub fn my_project_tests() {
describe("My Project", [
describe("2 + 2", [
it("equals 4", fn() {
2 + 2
|> expect.to_equal(4)
}),
]),
])
}
// You can also write tests as standalone functions.
// These functions must be public and have a name ending in `_test`:
pub fn a_standalone_test() {
{ "Hello, " <> "Joe!" }
|> expect.to_equal("Hello, Joe!")
}
Migrating from gleeunit
If you’re coming from gleeunit
, follow these steps for an easy migration to Startest:
- Install Startest with
gleam add --dev startest
- Replace all imports of
gleeunit/should
withstartest/expect
- Update
gleeunit/should
assertions tostartest/expect
- Consult the migration table down below for the equivalent assertions in Startest
- Remove
gleeunit
withgleam remove gleeunit
- Optionally, begin using the
describe
API to structure your tests
gleeunit/should | startest/expect |
---|---|
should.equal | expect.to_equal |
should.not_equal | expect.to_not_equal |
should.be_true | expect.to_be_true |
should.be_false | expect.to_be_false |
should.be_ok | expect.to_be_ok |
should.be_error | expect.to_be_error |
should.be_some | expect.to_be_some |
should.be_none | expect.to_be_none |
should.fail | expect.to_be_true(False) or panic |
This conversion can typically be done with a find/replace:
- should.
+ expect.to_