Showing posts with label integration_test. Show all posts
Showing posts with label integration_test. Show all posts

Tuesday, August 28, 2018

準備 DB integration test

本來我的作法通常是這樣子:

  • CREATE TABLE new_table LIKE old_table;
  • INSERT new_table SELECT * FROM old_table;
先透過上述的指令,將資料表的子集合資料做成新的資料表,然後再透過 MySQL Workbench 將新的資料表匯出。最後再刪掉暫時存在的資料表。

==============
最近改用了新的方式
1. 對原始的資料表,透過 MySQL Workbench 只匯出 schema ,做成一個匯入的 SQL script
2. 透過 MySQL Workbench 下 query ,query result 只能做成 CSV 匯出。但是,可以透過其它的線上工具,將 CSV file 轉檔成為 SQL data file 

Wednesday, July 11, 2018

使用 localstack 來開發 aws service 的整合測試

要使用這個測試,需要先啟動 localstack 的 docker
docker run -d -p 4567-4583:4567-4583 localstack/localstack

Tuesday, June 26, 2018

integration test with mysql

重構公司的 legacy code 時,發覺沒有 integration test ,一遇到資料庫相關的程式碼,心裡就覺得很棘手,不知該如何是好?

於是就動手做了一小段 integration test 的準備。
1. 首先是準備資料庫
2. 再來是準備初始資料
3. 將初始資料塞進資料庫

準備資料庫的部分,用 docker 好了。

準備初始資料的部分,想了一下,就用 mysql workbench 。
mysql workbench 要 export 資料,如果是用 csv 格式的話,可以 export 查詢的 result set 。但是如果要 export sql 格式的話,只能是 table 或是 database 。後來,我選擇先用 query  來做出一張新的 table ,再用 mysql workbench 來 export table

將初始資料塞進資料庫的部分,我本來是想說,我開發的程式語言是 nodejs ,我就用 nodejs 來做檔案的讀取,與資料庫的寫入吧? 結果,試了一些專門做資料庫 import 的 library 之後,卻出乎意料之外的…很難用。

重新考慮之後,如果考慮 dependency declaration 和 dependency isolation ,最好還是把測試用 nodejs 來做。不過,既然只是 integration test ,前兩者似乎也可以做一些妥協,那我還是用單純的老方法 mysql client 來做好了。

#!/bin/bash

docker run --name mysql-container -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password -d mysql:5.6

# wait docker initialized
sleep 30

# import ce.item-report-hourly
mysql -h 127.0.0.1 -uroot -ppassword < ./ce_item_report_hourly.sql