Bạn đang xem bài viết Unit Test Với Junit 4X được cập nhật mới nhất trên website Ezlearning.edu.vn. Hy vọng những thông tin mà chúng tôi đã chia sẻ là hữu ích với bạn. Nếu nội dung hay, ý nghĩa bạn hãy chia sẻ với bạn bè của mình và luôn theo dõi, ủng hộ chúng tôi để cập nhật những thông tin mới nhất.
Trong bài viết này chúng ta cùng tìm hiểu về test và unit test bằng JUnit 4.x.
1.1 Code under test
Những đoạn code được kiểm thử thường gọi code under test. Nếu bạn đang kiểm thử một ứng dụng nào đó thì nó được gọi là application under test.
1.2 Test fixture
Đây là các điều kiện để có thể bắt đầu kiểm thử. Ví dụ như là một đoạn String cố định được sử dụng để làm input cho một method nào đó. Chúng ta chỉ có thể kiểm thử nếu đoạn test đó có đầy đủ các thông số truyền vào.
1.3 Unit test và unit testing
Một unit test là một đoạn code nhỏ được viết bởi developer nhằm mục đích kiểm tra một hàm hay chức năng riêng biệt nào đó có kết quả đúng như kì vọng hay không. Tỉ lệ các đoạn code được kiểm tra bằng unit test được gọi là test coverage. Phạm vi kiểm tra của một unit test thường là một method hoặc một class. Những method hay class có phụ thuộc lẫn nhau nên được tách biệt ra khi viết unit test. Vì vậy, unit test không phù hợp để kiểm thử những interface phức tạp hoặc một component. Chúng ta nên sử dụng integration test cho những phạm vi lớn và phức tạp này.
1.4 Integration test
Một kiểm thử tích hợp (integration test) có nhiệm vụ kiểm tra hoạt động của một component hoặc một tập hợp các component. Loại kiểm thử này còn được biết đến với cái tên funtional test.
Integration test sẽ kiểm tra toàn bộ hệ thống có làm việc như mong muốn không, do đó chúng giúp làm giảm các công việc kiểm thử thủ công.
1.5 Performance test
Kiểm thử hiệu năng được sử dụng để đánh giá các thành phần trong phần mềm được dùng đi dùng lại nhiều lần. Mục đích là để kiểm tra khả năng chịu tải cao, tốc độ tải trong điều kiện nhiều request.
1.6 Behavior và state testing
Một đoạn test được gọi là behavior test nếu nó kiểm tra các phương thức với các parameter truyền vào là chính xác và không quan tâm đến kết quả trả về là gì. Một đoạn test được gọi là state testing nếu nó validate kết quả trả về.
1.7 Testing framework
Trong java thì chúng ta có một vài framework hỗ trợ việc kiểm thử. Tiêu biểu nhất là JUnit và TestNG. Trong bài viết này chúng ta sẽ tìm hiểu về JUnit 4.x.
1.8 Những đoạn test nên đặt ở đâu?
Thông thường thì các đoạn unit test sẽ được tạo trong một folder hoặc một package riêng, tránh lẫn lộn với những đoạn code chính. Theo chuẩn build project của Maven và Gradle thì
src/main/java là nơi chứa Java class
src/test/java là nơi chứa test class.
Cung cấp Annotation để xác định việc xác thực phương thức.
Cung cấp Asertion cho kết quả mong muốn.
Cung cấp các Runner cho việc chạy thử.
Giúp viết code nhanh hơn mà chất lượng ngày càng tăng.
@Test – Đánh dấu một method là một method dùng để kiểm thử.
@Before và @After : đánh dấu vị trí bắt đầu và kết thúc của một method test trong một class.
@BeforeClass và AfterClass: Đánh dấu method chạy đầu tiên và cuối cùng trong một class test.
@Ignore hoặc @Ignore("Why disabled"): đánh dấu đoạn test nên được disabled. Nó được sử dụng khi các đoạn code chính đã được thay đổi nhưng các test case chưa được cập nhật hoặc điều chỉnh hoặc thời gian thực thi quá lâu nếu phải bao gồm cả nó. Tốt nhất là nên kèm theo giải thích tại sao lại disabled khi sử dụng annotation này.
@Test(timeout=100): Đoạn test sẽ được đánh là thất bại nếu thời gian thực thi lớn hơn 100 miliseconds.
Ví dụ:
public class SampleTest { @BeforeClass public static void setUpBeforeClass() throws Exception {Khi chạy đoạn code trên thì thứ tự thực thi sẽ là:
Method được đánh dấu @BeforeClass.
Method được đánh dấu @Before.
Method kiểm thử đầu tiên được đánh dấu @Test (ở đây là test1()).
Method được đánh dấu @After.
Method được đánh dấu @Before.
Method kiểm thử thứ hai được đánh dấu @Test ( ở đây là test2()).
Method được đánh dấu @After.
Method được đánh dấu @AfterClass.
# 4. Assertions Khi muốn xác nhận một kết quả trả về có đúng như mong muốn không, chúng ta có danh sách Junit assertion cũ như sau:
org.junit.Assert.assertArrayEquals
org.junit.Assert.assertEquals
org.junit.Assert.assertFalse
org.junit.Assert.assertNotNull
org.junit.Assert.assertNotSame
org.junit.Assert.assertNull
org.junit.Assert.assertSame
org.junit.Assert.assertTrue
Từ phiên bản JUnit4, chúng ta có thêm một method org.junit.Assert.assertThat cho phép sử dụng các matcher để xác nhận tốt hơn:
Dễ đọc hơn
assertThat(actual, is(equalTo(expected))); dễ đọc hơn assertEquals(expected, actual);
assertThat(actual, is(not(equalTo(expected)))); tốt hơnassertFalse(expected.equals(actual));
Thông báo lỗi tốt hơn
Linh hoạt hơn
Có thể sử dụng nhiều điều kiện để assert bằng cách dùng các matcher như anyOf hay allOf.
Nếu phương thức bạn cần kiểm thử có throw các exceptions thì chúng ta cũng có vài cách để kiểm tra xem nó có throw đúng như trong điều kiện mong muốn không. Ví dụ như chúng ta tạo một phương thức để đọc file và nó sẽ trả về một exception với message “The file ${file_name} does not exit!” trong trường hợp không tìm thấy file đó.
@Test(expected = FileNotFoundException.class) public void testReadFile() throws IOException { FileReader reader = new FileReader("test.txt"); reader.read(); reader.close(); } @Test public void testReadFile2() { try { FileReader reader = new FileReader("test.txt"); reader.read(); reader.close(); fail("Expected an IOException to be thrown"); } catch (IOException e) { assertThat(e.getMessage(), is("test.txt (No such file or directory)")); } } @Rule public ExpectedException thrown = ExpectedException.none(); @Test public void testReadFile3() throws IOException { thrown.expect(IOException.class); thrown.expectMessage(startsWith("test.txt (No such file or directory)")); FileReader reader = new FileReader("test.txt"); reader.read(); reader.close(); }Thông thường chúng ta cần kiểm tra một method đơn với nhiều loại data test khác nhau hoặc nhiều input khác nhau. Trong trường hợp này chúng ta có Parameterized để thực hiện kiểm thử một cách dễ dàng và dễ đọc.
https://javacodehouse.com/blog/junit-tutorial/ http://www.vogella.com/tutorials/JUnit/article.html
Unit Test Là Gì? 10 Frameworks Unit Test Cho Javascript
Thông thường khi làm một dự án web lớn thì nó sẽ được chia thành nhiều phần nhỏ để dễ dàng phát triển cũng như chỉnh sửa. Unit test có nhiệm vụ giúp bạn thực hiện kiểm tra các chức năng đó có chạy đúng theo yêu cầu hay không. Nó sẽ có hai loại unit test chính là Manual và Automated. Một số lợi ích khi bạn sử dụng unit test là:
Giúp cải thiện chất lượng đoạn mã trong chương trình.
Thời gian tìm lỗi được phát hiện nhanh hơn.
Cung cấp documentation cho trang web.
Đơn giản hóa quá trình gỡ lỗi.
Tiết kiệm chi phí khi xây dựng trang web.
Giúp bạn hiểu rõ hơn về hệ thống của mình thông qua những test case do bạn viết.
Những Framework Unit Test Dành Cho Lập Trình Viên
MochaJS là một framwork testing được sử dụng phổ biến trong lập trình web và hỗ trợ cho cả back-end(Nodejs) và front-end. Nó giúp bạn thực hiện kiếm tra không đồng bộ một cách đơn giản và dễ dàng. Ngoài ra nó còn có cộng động lập trình viên hỗ trợ đông đảo, nhiều hướng dẫn ví dụ chi tiết và được nhiều công ty cũng như website lớn tin tưởng sử dụng.
Jest là một framwork testing tập trung vào sự đơn giản. Nó có thể làm việc với Babel, TypeScript, Node, React, Angular, Vue… Với các bài test được chạy song song trong các quy trình riêng nhằm tối đa hiệu suất cho chương trình. Ngoài ra nó còn có tài liệu hướng dẫn chi tiết, yêu cầu thiết lập không phức tạp và dễ dàng có thể mở rộng để phù hợp với yêu cầu của lập trình viên.
AVA là một framework testing cho Javascript với API ngắn gọn và đưa ra những thông báo lỗi chi tiết trong quá trình kiểm tra. Một số điểm mạnh nó là cú pháp đơn giản, viết các test cho cú pháp Javascript mới nhất, hỗ trợ chức năng không đồng bộ, cung cấp chức năng promise…
Jasmine là một framework testing dùng để kiểm tra các đoạn mã Javascript. Với cú pháp đơn giản giúp bạn viết test case một cách dễ dàng. Một số điểm mạnh là hỗ trợ cho cả front-end và back-end, có tài liệu mở rộng khi sử dụng với các framework khác, tốc độ thực thi nhanh, không sử dụng bất kỳ thư viện bổ sung nào…
Karma mang lại một môi trường testing hiệu quả cho các nhà phát triển với các tính năng hữu ích như là có thể kiểm tra code trên nhiều thiết bị như trình duyệt, điện thoại, máy tính bảng…, mô tả các testing với Jasmine, Mocha, QUnit…, dễ dàng gỡ lỗi trực tiếp từ IDE thông qua WebStorm hay Google Chrome.
Puppeteer là một thư viện NodeJS cung cấp các high-level API để sử dụng cho các ứng dụng dành riêng cho trình duyệt như kiểm tra thu thập dữ liệu, testing UI, kiểm tra các chrome extension, xem các vấn đề về hiệu suất, chụp ảnh màn hình và PDF của các trang…
Nightwatch là một thư viện được xây dựng bằng NodeJS dễ dàng sử dụng cho các ứng dụng và trang web. Với cú pháp đơn giản, mạnh mẽ cho pháp bạn viết các test case một cách nhanh chóng thông qua Javascript và CSS. Quản lý tự động các dịch vụ Selenium hoặc WebDriver (ChromeDriver, GeckoDriver, Edge, Safari) trong một quy trình con riêng biệt. Sử dụng API WebDriver của W3C để điều khiển các trình duyệt thực hiện các lệnh và xác nhận trên các phần tử DOM.
Cypress là một testing framework giúp bạn kiểm tra nhanh chóng dễ dàng với mọi thứ chạy trên trình duyệt. Một sổ điểm mạnh của nó là cách thiết lập đơn giản, tự động tải lại khi các test case thay đổi, các hình ảnh được chụp tự động khi chạy test case, có thể gỡ lỗi trực tiếp thông qua các cụ phổ biến như Chrome DevTools…
Tape là một testing framework nhỏ gọn cung cấp bare-metal code giúp lập trình viên hoàn toàn tự do trong việc viết test case cho cả front-end và back-end. Ngoài ra nó cũng hỗ trợ cho ES6, coffee script tiêu chuẩn, Typescript và có thể chạy trên hầu hết các trình duyệt phổ biến hiện nay. Một hạn chế là nó không hỗ trợ global do vậy bạn cần thêm Tape vào mỗi tệp kiểm tra khi muốn thực hiện testing.
Chai là một testing framework cho NodeJS và trình duyệt. Nó cung cấp 2 loại là TDD(Test-Driven Development) tập trung vào kiểm tra quy trình nội bộ, hiệu suất của code và BDD(Behaviour-Driven Development) ưu tiên giá trị được đưa ra trong yêu cầu. Ngoài ra nó cũng các bài viết hướng dẫn chi tiết cho người mới bắt đầu cũng như cộng đồng lập trình viên hỗ trợ đông đảo.
Một số bài viết hướng dẫn sử dụng unit test
JestAvaJasmineKarma
Tổng kết:
Unit Test Là Gì? Giới Thiệu Về Unit Test Và Ví Dụ
Lời nói đầu.
Dành cho các bạn lười biếng =]]. Nêú các bạn không muốn đọc lý thuyết thì scroll xuống để xem ví dụ về cách viết unit test và hãy xem mình là ở vị trí nào?
Bất cứ ai đã tham gia vào vòng đời phát triển phần mềm dù ít hay nhiều kinh nghiệm đều cũng đã từng nghe tới Unit Test. Unit Test là một cơ chế chấp nhận để khám phá phần mềm hoạt động tốt như thế nào theo các yêu cầu được chỉ định. Mặc dù mục đích của kiểm tra là tìm ra các lỗi, nhưng nó không thể đảm bảo sự vắng mặt của các lỗi khác, bất kể các trường hợp kiểm thử đã được thiết kế sáng tạo như thế nào.
Có nhiều công ty không quan trọng vấn đề này nhưng nếu Công TY bạn bắt buộc nghiêm ngặt vấn đề này thì tôi tin và tôi viết vị trí của bạn đang ở đâu. Một lập trình viên lúc nào cũng cận thẩn trong việc code thì lúc nào cũng phải có test case.
Tham gia cùng chúng tôi:
Facebook: Cộng đồng lập trình javascript
Facebook Cộng đồng giới thiệu bài viết, website, sản phẩm tăng traffic.
Bài viết này sẽ cung cấp cho bạn những điều sau đây:
Unit Test là gì?
Unit Test có cần thiết không?
Unit Test có nhược điểm gì?
Viết Unit Test thông qua ví dụ.
#Unit Test là gì?
Bản thân bài kiểm tra đơn vị là một đoạn mã ngắn hoặc đoạn mã được thiết kế để xác minh hành vi của một đơn vị cụ thể để tạo ra kết quả vượt qua hoặc thất bại. Mục đích của thử nghiệm đơn vị là cho phép các nhà phát triển chạy càng nhiều thử nghiệm đơn vị càng tốt để xác định các lỗ hổng tiềm năng. Khi ứng dụng đã vượt qua thử nghiệm đơn vị, các hình thức thử nghiệm khác sau đó sẽ cần được áp dụng để xác nhận thêm.
#Unit Test có cần thiết không?
Câu trả lời đương nhiên là cần thiết với một Lập Trình Viên có trách nhiệm với những dòng code của chính bản thân mình.
1 – Phát triển nhanh hơn.
Một khi các devloper viết các test case thì việc gỡ bug sẽ ít dành thời gian hơn và sau đó sẽ tự tin hơn về việc thực hiện các thay đổi code. Những kỹ năng về mọi mặt sẽ phát triển nhanh hơn các Lập Trình Viên bình thường.
Tính cận thận và trách nhiệm trong những bài unit test cũng khẳng định ở bên ngoài cuộc sống của họ.
2 – Cấu trúc Code tốt hơn.
Khi các nhà phát triển viết unit tests, sự nhấn mạnh của họ là suy nghĩ về cách mã của họ sẽ được sử dụng trên toàn hệ thống, điều này thường dẫn đến thiết kế tốt hơn.
Và còn nhiều lợi ích khác như là giảm công việc cho các tester, giảm giá thành chi phí code, giúp giảm chi phí cho việc bảo trì trong tương lai…
#Unit Test có nhược điểm gì?
Mặc dù các lợi ích của Unit Test đang bắt đầu được hiểu rộng rãi hơn, nhưng vẫn còn một số lý do tại sao nó không được áp dụng đầy đủ hơn, điều này khiến tiềm năng của nó không được thực hiện.
1 – Không có thời gian cho Unit Test.
Viết Unit Test là tốn thời gian đó là lý do tại sao rất khó để đáp ứng thời hạn. Trong thực tế, Unit Test có thể tiết kiệm rất nhiều thời gian và nỗ lực phát triển trong thời gian dài.
2 – Unit tests khác với viết code
Đúng, bạn hãy nghĩ rằng để viết được một unit test đôi khi còn mất thời gian hơn viết một chức năng code. Và có thể có những Lập Trình Viên viết được code nhưng chưa chắc viết được test case. Không có gì đảm bảo, ngay cả khi mã được kiểm tra kỹ lưỡng, sẽ không có lỗi.
#Viết Unit Test thông qua ví dụ
Bây giờ mình sẽ làm một bài tập nho nhỏ cho các bạn hiểu về cách thức viết một unit test như thế nào?
Mình sẽ lấy bài toàn Viết hoa chữ cái đầu tiên của mỗi từ trong Câu trong bài Sự Khác Biệt Về Kinh Nghiệm Trong Lập Trình Javascript để làm ví dụ:
Sử dụng reduce() làm tăng hiệu quả và điều quan tâm là hiệu suất. Giải pháp dùng reduce() and map().
const rest = word.slice(1); const firstLtr = word.charAt(0); return firstLtr.toUpperCase() + rest.toLowerCase(); } if(!phrase) return phrase; [first, …rest] = phrase.split(‘ ‘); capitalize(first)) } Unit Test:
Tôi đã viết một hàm trợ giúp khẳng định và một số trường hợp thử nghiệm. Đây không phải là một bài kiểm tra toàn diện
return fun(input) === expected ? ‘passed’ : `failed on input=${input}. expected ${expected}, but got ${fun(input)}`; } Test cases:
let testCases = [ {input: "I'm a little tea pot", expected: "I'm A Little Tea Pot"}, {input: "sHoRt AnD sToUt", expected: "Short And Stout"}, {input: "sHoRt AnD sToUt", expected: "Short And Stout"}, {input: "tôi là một lập trình viên javascript", expected: "Tôi Là Một Lập Trình Viên Javascript"}, {input: "HERE IS MY HANDLE HERE IS MY SPOUT", expected: "Here Is My Handle Here Is My Spout"}, {input: "", expected: ""}, {input: undefined, expected: undefined}, ]Làm bài kiểm tra này, bạn sẽ vượt qua tất cả các bài kiểm tra:
console.log(testResult); output: 0: “passed” 1: “passed” 2: “passed” 3: “passed” 4: “passed” 5: “passed”
#Kết Luận
Tham gia cùng chúng tôi:
Facebook: Cộng đồng lập trình javascript
Facebook Cộng đồng giới thiệu bài viết, website, sản phẩm tăng traffic.
Tham khảo tại:
https://www.guru99.com/unit-testing-guide.html https://areknawo.com/lets-talk-js-unit-testing/ https://blog.testlodge.com/what-is-unit-testing/
Hướng Dẫn Viết Unit Test Trong Angular
Lợi ích của Unit test
Cải thiện design: Bắt tay vào code mà không để ý quá nhiều đến design là một lỗi phổ biến của các developer, việc viết unit test sẽ bắt buộc bạn phải suy nghĩ, thậm chí nghĩ đi nghĩ lại về design
Dễ dàng refactor: bởi vì bạn đã có các case test đảm bảo code của bạn chạy đúng như mong đợi, bạn có thể dễ dàng refactor code mà không lo sẽ tạo ra những bug mới
Test là một tài liệu về spec: nếu viết test chuẩn và đủ case, thì chỉ cần đọc test, ta cũng có thể hiểu rõ spec còn nhanh hơn cả đọc code
Việc viết test giúp developer tự tin hơn
Bạn có thể cho rằng việc viết test quá tốn thời gian, nhất là viết test FE, có khi nó còn lâu hơn cả viết code nữa, nhưng mình nghĩ nó sẽ giúp tiết kiệm thời gian hơn khi bạn muốn refactor code hay phát triển tính năng mới, giảm thiểu được cả thời gian để fix bug so với việc không viết test.
Giờ chúng ta sẽ bắt tay vào một ví dụ nhỏ nhưng khá đầy đủ sử dụng Angular, Jasmine và Karma. Phần tiếp theo của bài viết sẽ đề cập đến những điều sau:
Giải thích một chút về Karma và Jasmine
Karma config
Tạo một file test đơn giản
Test angular form
Test component với service
Tạo project Angular với Jasmine và Karma
Install angular-cli và tạo project mới
Giải thích 1 chút về Jasmine và Karma không lại bảo nãy giờ cứ nói hoài mà không biết là gì
Jasmine: là một framework dùng để viết test, nó có các function có sẵn hỗ trợ viết các loại test khác nhau
Karma: là một Javascript tool được sử dụng để load ứng dụng và thực thi test của bạn. Karma sẽ được thực thi bằng dòng lệnh và sẽ hiển thị kết quả cho bạn biết mỗi khi bạn chạy trình duyệt.
Để chạy thử chỉ cần gõ ng test. Lệnh này sẽ thực thi các case test, mở trình duyệt, hiển thị kết quả trên trình duyệt và trong console.
Karma config
Giờ hãy nhìn vào file Karma config được sinh ra từ angular-cli
frameworks: đây là nơi jasmine được set là framework để testing, nếu bạn muốn dùng 1 framework khác thì có thể điền vào đây.
autoWatch: nếu nó được set là true, test sẽ chạy chế độ watch mode, có nghĩa là mỗi khi bạn thay đổi bất cứ dòng code nào trong file test và lưu lại, nó sẽ tự động build lại và chạy lại.
browsers: đây là nơi để set trình duyệt và test sẽ chạy, mặc định sẽ là Chrome, nhưng bạn có thể sử dụng trình duyệt khác bằng cách khai báo ở đây.
Bắt đầu với một file test đơn giản
Lướt qua 1 chút thì ở đây chúng ta đã
import các thư viện angular testing mà chúng ta sẽ sử dụng
Import các component phụ thuộc
Sử dụng describe để bắt đầu phần viết test với title trùng với tên component test.
Sử dụng async trước mỗi case test, mục đích là để các phần code không đồng bộ có thể kết thúc trước khi tiếp tục, nó tương tự với cách dùng async lúc viết code ý.
Trước khi chạy bất cứ case test nào trong Angular, bạn cần phải config Angular testbed. Nó giúp tạo 1 môi trường cho component đang được test. Bất cứ module, component, service nào mà component bạn đang test cần, thì đều phải được đưa vào trong testbed. Cuối cùng, sau khi config xong, bạn sẽ gọi đến hàm compileComponents().
Tiếp theo, chúng ta có 2 case test. Mình sẽ giải thích từng case một:
Case đầu tiên, chúng ta sẽ kiểm tra xem component có thực sự chứa text chúng ta kì vọng trong phần title hay không. Đầu tiên, chúng ta cần 1 instance của app.component, vì vậy chúng ta sử dụng hàm createComponent(), tạo 1 đối tượng fixture, cho phép chúng ta tạo 1 instance của component. Sau khi đã có instance của app.component, chúng ta có thể kiểm tra giá trị của thuộc tính title có giống với text chúng ta kì vọng hay không bằng hàm toEqual().
Test angular form
Bắt đầu với 1 file HTML chúng tôi có chứa form
Form này khá đơn giản nên không cần giải thích gì nhiều. Nút submit sẽ bị disabled nếu form invalid.
Tiếp theo đến contact.component.ts
Giờ đến file test
Trông phức tạp hơn nhiều so với file test trên nhỉ, đừng lo, mình sẽ giải thích cụ thể từng phần đây
Đầu tiên vẫn là phần import, không có gì khác lắm, ngoại trừ import thêm By để chọn element từ DOM.
Trong beforeEach(), ta dùng promise cho hàm compileComponent(), khi promise được resolved, chúng ta sẽ tạo instance của component trong này luôn, để đỡ phải viết lại trong mỗi case test.
Case đầu tiên chỉ đơn giản là kiểm tra giá trị thuộc tính text của component.
Case thứ 2 kiểm tra giá trị của biến submittedlà true khi hàm onSubmit() được gọi đến.
Case thứ 4 kiểm tra khi truyền vào những giá trị invalid, thuộc tính valid của form sẽ là false.
Cuối cùng, case thứ 5 ngược lại với case thứ 4, khi truyền vào những giá trị valid, thuộc tính valid của form sẽ là true.
Trước khi kết thúc bài viết, chúng ta sẽ đến với phần cuối cùng, là làm sao xử lý service khi component cần test sử dụng chúng.
Test component với service
Ví dụ một component sử dụng service
Component này sẽ gọi sang service để lấy danh sách users, lúc viết test thì việc lấy users từ đâu cũng ko quan trọng, nên ta có thể tạo component mocking cho service này.
Về cơ bản thì cũng giống mấy ví dụ trên, chỉ khác ở chỗ khi UserService được gọi đến, nó sẽ thay bằng UserServiceMock. UserServiceMock là một dummy service để trả về dummy data để chạy test. Vậy thôi, đó là cách bạn nên dùng để mock service cho component.
Nguồn: https://medium.com/swlh/angular-unit-testing-jasmine-karma-step-by-step-e3376d110ab4
Cập nhật thông tin chi tiết về Unit Test Với Junit 4X trên website Ezlearning.edu.vn. Hy vọng nội dung bài viết sẽ đáp ứng được nhu cầu của bạn, chúng tôi sẽ thường xuyên cập nhật mới nội dung để bạn nhận được thông tin nhanh chóng và chính xác nhất. Chúc bạn một ngày tốt lành!