Gil*_*ili 8 postgresql unit-test
我正在尝试将我的单元测试从 H2 迁移到 Postgresql。
目前,H2 为我提供了一个内存模式,这样每个连接都映射到一个唯一的模式、创建表、运行测试并删除模式。模式创建和销毁由 H2 自动处理。
单元测试同时运行。
在 Postgresql 中执行此操作的最佳方法是什么?具体来说,
hbn*_*hbn 15
pg_temp
是当前会话的临时模式的别名。
如果您SET search_path TO pg_temp
在运行测试之前执行 a ,它应该都可以正常工作(只要没有明确引用架构)。
如果您根本不想更改脚本,则将search_path
测试登录的用户设置为:
> ALTER ROLE testuser SET search_path = pg_temp;
Run Code Online (Sandbox Code Playgroud)
除非明确指定,否则用户创建的所有内容都将在 pg_temp 中。
这是来自 的示例psql
,显示了别名解析为的实际模式(对于此连接):
> SET search_path TO pg_temp;
SET
> create table test();
CREATE TABLE
> \dt test
List of relations
Schema | Name | Type | Owner
-----------+------+-------+----------
pg_temp_4 | test | table | postgres
(1 row)
Run Code Online (Sandbox Code Playgroud)
而且,正如您所期望的那样,每个并发连接的模式都不同,并且在连接关闭后就消失了。
请注意,这也适用于函数,尽管在调用它们时您必须显式引用 pg_temp 模式。
您可以获取当前临时架构的名称(创建第一个临时表后),如您添加的链接中所示:
SELECT nspname
FROM pg_namespace
WHERE oid = pg_my_temp_schema();
Run Code Online (Sandbox Code Playgroud)
但你目前的计划仍然没有多大意义。要在当前临时模式中创建表,只需创建临时表即可。就这样。默认情况下,search_path
定义临时表首先可见。人们永远不需要对临时表进行模式限定。您不必以任何方式直接处理当前的临时模式 -这是一个实现细节。
归档时间: |
|
查看次数: |
14993 次 |
最近记录: |