1

因爲它已經成爲一種常用的模式,將1個特定React組件的標記,樣式和JavaScript整合到1個單個文件中。將單元測試(例如摩卡describe)放到同一個文件中是否也是一種很好的模式?我應該將UT測試的React組件放到與該組件相同的文件中嗎?

注意:假設捆綁工具可以剝離未使用的import s和describe s中的代碼。

例子:

import React from 'react'; 
import { shallow } from 'enzyme'; 
import { expect } from 'chai'; 

const MyComponent = ({ active }) => (
    <div style={{ color: active ? 'blue' : 'gray' }}> 
    {active ? 'this is active' : 'this is inactive'} 
    </div> 
); 

export default MyComponent; 

// mocha tests (same file) 

describe('MyComponent',() => { 
    context('active = true',() => { 
    it('should include is active text',() => { ... }); 
    it('should have color blue',() => { ... }); 
    }); 

    context('active = false',() => { ... }); 
}); 
+1

這會將您的測試與您的生產版本捆綁...? –

+0

這可能是**不是一個好習慣。這將不必要地膨脹在產品中運行的代碼。更好的做法是將測試分成另一個文件並將其從軟件包中排除。 –

+0

讓我們假設捆綁工具可以剝離未使用的導入並從生產構建 – tungv

回答

0

這會約束你,會導致很多問題。我對你的架構不太瞭解。但是這樣你就不能使用任何分析工具。如果您將使用任何工具來測試您的代碼環境,例如SonarQube,它將解析並測試,並且失敗。

另一種情況:假設您在推送到存儲庫時正在運行必要的構建。您的應用正在增長,您需要在每次拉動中運行SonarQube。你需要添加一個啓發式檢查,如果你的拉動觸摸*.spec.js文件 - >你再也不能。

這也不被使用,也不是最佳實踐。最常用和最常見的做法是將您的規格放在具有相同名稱和後綴spec.js的文件中,或放到組件的根目錄中的不同文件夾中,如__spec__/component.js

你的方法對任何事情都沒有幫助,在任何非常糟糕的情況下,你都無法將純代碼與測試分開。

相關問題