测试
4 分钟阅读
Testing 测试
Running Tests 运行测试
The Buffalo test runner will make sure your test environment is correct, and run your tests.
Buffalo 测试运行器将确保您的测试环境正确无误,并运行您的测试。
For example, if using Pop (database), it will first try to setup your test database by using the schema from the development database. If that doesn’t exist (CI, for example), it will run the migrations against the test database.
例如,如果使用 Pop(数据库),它将首先尝试使用开发数据库中的架构来设置您的测试数据库。如果不存在(例如 CI),它将在测试数据库上运行迁移。
The test runner will also make sure to ignore the dreaded vendor
directory.
测试运行器还将确保忽略可怕的 vendor
目录。
|
|
Execute a single test 执行单个测试
Since 0.10.2 自 0.10.2 起
Debugging a specific test is a difficult task, if you must execute all existing tests. You can use the -m
flag to execute a single test method:
如果必须执行所有现有测试,那么调试特定测试是一项困难的任务。您可以使用 -m
标志来执行单个测试方法:
|
|
This will iterate through all packages and run any test that matches FooMethod
in any package.
这将在所有包中进行迭代,并在任何包中运行与 FooMethod
匹配的任何测试。
Since 0.14.10 自 0.14.10 起
To limit to one package, specify the package name:
要限制为一个包,请指定包名称:
|
|
Test Suites 测试套件
Buffalo uses the github.com/gobuffalo/suite
package to create test suites.
Buffalo 使用 github.com/gobuffalo/suite
包来创建测试套件。
When running a test that is part of the test suite, the following is available to the test:
在运行测试套件中的一部分测试时,测试可以使用以下内容:
- The application,
as.App
. 应用程序,as.App
。 - The database,
as.DB
(if using Pop). 数据库,as.DB
(如果使用 Pop)。 - The session, as
as.Session
. 会话,作为as.Session
。 - The
github.com/stretchr/testify/require
test assertions.github.com/stretchr/testify/require
测试断言。 - The
github.com/gobuffalo/httptest
HTTP testing library.github.com/gobuffalo/httptest
HTTP 测试库。 测试示例 #
Test Example
|
|
Fixtures 固定装置
Since 0.12.0 自 0.12.0 起
Often it is useful to load sample data into the database at the start of a test. For example, you need to have a user in the database to log a person into the application, or you need some data in the database to test that a route renders responses correctly. Fixtures help us solve these problems easily.
通常,在测试开始时将示例数据加载到数据库中非常有用。例如,您需要在数据库中有一个用户才能将某人登录到应用程序,或者您需要在数据库中有一些数据来测试路由是否正确呈现响应。固定装置可以帮助我们轻松解决这些问题。
Fixtures are toml
files that are placed in your fixtures
directory. You can have as many fixture files as you like and they can also be named anyway that you like.
固定装置是放置在 fixtures
目录中的 toml
文件。您可以拥有任意数量的固定装置文件,并且可以根据需要对它们进行命名。
For example, if we have a simple Widget
model that renders to a page that looks like this:
例如,如果我们有一个简单的 Widget
模型,它会呈现为如下所示的页面:
|
|
We can create a fixture file like this:
我们可以创建一个这样的固定装置文件:
|
|
When we run our suite, these two records will be created in our test database and we can then test against these records. All you need to do to load the fixture is to reference it by its name with ActionSuite.LoadFixture
.
当我们运行套件时,这两个记录将在我们的测试数据库中创建,然后我们可以针对这些记录进行测试。您需要做的就是通过 ActionSuite.LoadFixture
引用其名称来加载固定装置。
|
|
You can find more detailed information on fixtures in the gobuffalo/suite repository README.
您可以在 gobuffalo/suite 存储库自述文件中找到有关固定装置的更多详细信息。
Accessing the Session 访问会话
Being able to manipulate the session for testing is very important. Test suites in Buffalo give you access to a testing session that you can use.
能够操纵会话以进行测试非常重要。Buffalo 中的测试套件允许您访问可以使用的测试会话。
See https://github.com/gobuffalo/authrecipe for a more in-depth example.
请参阅 https://github.com/gobuffalo/authrecipe,以获取更深入的示例。
|
|
Coverage Reports 覆盖率报告
The following feature requires the use of Go 1.10 or a more recent version. Go cover does not support the ./...
operator in older versions, and trying to use it will generate an error.
以下功能需要使用 Go 1.10 或更高版本。Go cover 不支持旧版本中的 ./...
运算符,尝试使用它会生成错误。
It is possible to generate test coverage reports with buffalo by specifying the -coverprofile
flag as follows:
可以通过指定 -coverprofile
标志来生成 buffalo 的测试覆盖率报告,如下所示:
|
|