Click here!!!!!!!!!!!!!!!!
ในการทดสอบหน้าบ้านเครื่องมือที่เลือกใช้คือ Cypress
มีการแบ่งการทดสอบออกเป็น 3 ระดับ คือ 1. Unit test 2. Component test 3. End-to-end test
1. การทดสอบ render หน้า index
it("should render Index", () => {
shallow(<Index />);
});
2. การทดสอบ render ประเภทสินค้า
it("render all tag", () => {
const wrapper = mount(<Index allTag={tag} />);
expect(wrapper.find('ul').children().length).toBe(3)
});
3. การทดสอบการเรียก function
it("should add data to tag want", () => {
const mockFn = jest.fn()
const { queryByTestId } = render(
<Index allTag={tag} onClick={mockFn} />,
);
fireEvent.click(queryByTestId('button0'));
expect(queryByTestId('tagWant').childNodes.length).toBe(1);
});
4. การทดสอบ render หน้า home
it("should render Home", () => {
shallow(<Home tag={tag} />);
});
5. การทดสอบ render ประเภทสินค้า
it("render all tag", () => {
const wrapper = shallow(<Home posted={posted} tag={tag} />);
expect(wrapper.find('ul').children().length).toBe(3)
});
it("render all posts", () => {
const wrapper = shallow(<Home posted={posted} tag={tag} />);
expect(wrapper.find('ul').children().length).toBe(3)
});
1. ทดสอบการค้นหาโพสต์ด้วยชื่อของสินค้า
describe('Search by title', () =>{
before(() =>{
cy.visit("http://localhost:8080/Home")
})
it('search "com"', () =>{
cy.get('input').type('com').wait(1000)
cy.get('#search').click().wait(1000)
})
})
เป็นการทดสอบการค้นหาโพสต์ด้วยชื่อของสินค้าที่ชื่อ com
จากนั้นจะมีการกดปุ่ม Search
หลังจากการกดปุ่ม Search
แล้วการแสดงผลของโพสต์จะเปลี่ยนไป โดยจะปรากฏขึ้นเฉพาะโพสต์ที่มีชื่อสินค้าตรงกับที่ได้ค้นหา
2. ทดสอบการค้นหาโพสต์ด้วย blank space
describe('Search by blank space', () =>{
before(() =>{
cy.visit("http://localhost:8080/Home")
})
it('search ""', () =>{
cy.get('#search').click().wait(1000)
})
})
เป็นการทดสอบการค้นหาโพสต์ด้วยชื่อของสินค้าด้วย blank space จากนั้นจะมีการกดปุ่ม Search
หลังจากการกดปุ่ม Search
แล้วการแสดงผลของโพสต์จะเปลี่ยนไป โดยจะปรากฏขึ้นมาทุกโพสต์ที่อยู่ในระบบ
3. ทดสอบการค้นหาโพสต์ด้วย white space
describe('Search by white space', () =>{
before(() =>{
cy.visit("http://localhost:8080/Home")
})
it('search " "', () =>{
cy.get('#search').click().wait(1000)
})
})
เป็นการทดสอบการค้นหาโพสต์ด้วยชื่อของสินค้าด้วย white space จากนั้นจะมีการกดปุ่ม Search
หลังจากการกดปุ่ม Search
แล้วการแสดงผลของโพสต์จะเปลี่ยนไป โดยจะปรากฏขึ้นมาทุกโพสต์ที่อยู่ในระบบ
4. ทดสอบการกรองโพสต์ด้วยประเภทของสินค้าครั้งละ 1 ชนิด
describe('Select tag in home page', () =>{
before(() =>{
cy.visit("http://localhost:8080/Home")
})
it('Select all tag in home page', () =>{
cy.get('.tag').eq(0).click().wait(1000)
cy.get('.tag').eq(1).click().wait(1000)
cy.get('.tag').eq(2).click().wait(1000)
})
})
เป็นทดสอบการกรองโพสต์ด้วยประเภทของสินค้าครั้งละ 1 ชนิด
หลังจากการกดปุ่มประเภทของสินค้าในแต่ละครั้งการแสดงผลของโพสต์จะเปลี่ยนไป โดยโพสต์ที่ปรากฏขึ้นจะถูกกรองตามประเภทสินค้าที่ได้เลือกกรอง
describe('Select com tag', () =>{
before(() => {
cy.visit("http://localhost:8080").wait(1000)
})
it('should com and click next btn', () =>{
cy.get('button').contains('com').click().wait(1000)
cy.get('button').contains('food').click().wait(1000)
cy.get('button').contains('it').click().wait(1000)
cy.get('button').contains('com').click().wait(1000)
cy.get('button').contains('food').click().wait(1000)
cy.get('#next-button').click().wait(1000)
cy.get('#productName').contains("Moblie phone 2 hand").wait(1000)
cy.contains('com').click().wait(1000)
cy.contains('it').click().wait(1000)
cy.contains('food').click().wait(1000)
cy.get('input').type('thai').wait(1000)
cy.get('#search').click().wait(1000)
})
})
เริ่มจากหน้าแรก มีการทดลองกดปุ่มประเภทรายการสินค้าต่างๆ เพื่อทดสอบ function ภายในปุ่มมีรายละเอียดการทำงานคือ ต้องกดเลือกประเภทสินค้าอย่างน้อย 1 รายการและสามารถเลือกประเภทสินค้าหลายรายการได้ และหากต้องการยกเลิกการเลือกประเภทสินค้านั้น ๆ สามารถกดปุ่มเดิมซ้ำเพื่อเป็นการยกเลิกได้
เมื่อเลือกรายการสินค้าสำเร็จจะกดปุ่ม Next
เพื่อไปยังหน้าถัดไป
หน้าถัดไปคือ หน้าหลักการใช้งานจะมีโพสต์ปรากฏขึ้น ซึ่งโพสต์ที่ปรากฏขึ้นจะเป็นโพสต์ที่อยู่ในประเภทสินค้าที่เลือกไว้ในหน้าแรก โดยมีการทดสอบให้กดโพสต์นั้นได้
ในหน้าหลักการใช้งานยังสามารถเลือกการกรองอีกครั้งจากประเภทสินค้าที่ปรากฏทางแถบขวามือ และยังสามารถค้นหาชื่อสินค้าที่ต้องการจากช่อง search
ในการทดสอบหลังบ้านเครื่องมือที่เลือกใช้คือ go
1. การทดสอบการ Get
โพสต์ทั้งหมด
func Test_GetAllPost(t *testing.T) {
app := fiber.New()
controllers.Route(app)
res, err := app.Test(httptest.NewRequest("GET", "/post/all", nil))
utils.AssertEqual(t, nil, err, "app.Test")
utils.AssertEqual(t, 200, res.StatusCode, "Status code")
}
2. การทดสอบการ Get
โพสต์ด้วย ID
func Test_GetPostById(t *testing.T) {
app := fiber.New()
controllers.Route(app)
res, err := app.Test(httptest.NewRequest("GET", "/post/getbyid/2", nil))
utils.AssertEqual(t, nil, err, "app.Test")
utils.AssertEqual(t, 200, res.StatusCode, "Status code")
}
3. การทดสอบการ Get
โพสต์ด้วยประเภทสินค้า
func Test_GetPostByTag(t *testing.T) {
app := fiber.New()
controllers.Route(app)
res, err := app.Test(httptest.NewRequest("GET", "/post/getbytag/6/7", nil))
utils.AssertEqual(t, nil, err, "app.Test")
utils.AssertEqual(t, 200, res.StatusCode, "Status code")
}
func TestCreatePost(t *testing.T) {
post_test := model.Post{
PostId: 2,
PinId: 99,
ProductName: "want thai ice tea",
PostDate: time.Now(),
ProductOption: "buy",
Price: 50,
Amount: 1,
TagId: 99,
}
user_test := model.User{
UserId: 2,
Name: "tester naja",
Address: "localhost",
Contact: "[email protected] ",
PhoneNumber: "1212312121",
}
pin_test := model.Pin{
PinId: 99,
Pin: "99999999",
UserId: 2,
}
tag_test := model.Tag{
TagId: 99,
TagName: "food",
}
type args struct {
post model.Post
tag model.Tag
user model.User
pin model.Pin
}
tests := []struct {
name string
args args
wantErr bool
}{
// TODO: Add test cases.
{name: "Create-post-test-1", args: args{post: post_test, tag: tag_test, user: user_test, pin: pin_test}, wantErr: false},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if err := services.CreatePost(tt.args.post, tt.args.tag, tt.args.user, tt.args.pin); (err != nil) != tt.wantErr {
t.Errorf("CreatePost() error = %v, wantErr %v", err, tt.wantErr)
}
})
}
}