官术网_书友最值得收藏!

Extracting out a field-finder function

Both of our tests include the following line, which reaches inside the form to pull out the firstName field:

const field = form('customer').elements.firstName;

This DOM manipulation is not related to what we're testing: while we care about the value of field, we are not interested in how the DOM API works.

We can improve the readability of our tests by keeping code within tests at a high level of abstraction, and extracting lower-level logic into helper methods. Since our tests are passing at the moment, now is a great opportunity to refactor.

Extract this field variable into a new function called firstNameField, as shown:

const firstNameField = () => form('customer').elements.firstName;

In the process of converting this variable into a function, we renamed it from field to firstNameField. A short, generic variable name such as field is fine inside the short scope of a single test. But once you pull the variable up into the describe scope, you need to be more specific in your naming.

The last test we wrote now simplifies to this:

it('includes the existing value for the first name', () => {
render(<CustomerForm firstName="Ashley" />);
expect(firstNameField().value).toEqual('Ashley');
});

Update the first test in the same way:

it('renders as a text box', () => {
render(<CustomerForm />);
expectToBeInputFieldOfTypeText(firstNameField());
});

It's worth pointing out here that, if we hadn't extracted the three expectations into this function, we could have called this new function three times, rather than calling it once and saving that value in a variable. I probably wouldn't do this in my production code, but it's fine in tests; readability is more important than minimizing computation:

expect(firstNameField()).not.toBeNull();
expect(firstNameField()).toEqual('INPUT');
expect(firstNameField()).toEqual('text');
主站蜘蛛池模板: 黄石市| 上林县| 武宁县| 巨鹿县| 特克斯县| 天台县| 瑞安市| 南康市| 芜湖县| 湘潭市| 安塞县| 连山| 瓦房店市| 阿拉善左旗| 南岸区| 五寨县| 丰城市| 肥城市| 华容县| 哈尔滨市| 定州市| 类乌齐县| 礼泉县| 黄冈市| 土默特左旗| 原平市| 东乡| 西峡县| 肥东县| 漳平市| 临猗县| 贵州省| 龙海市| 聂拉木县| 昆山市| 油尖旺区| 宜君县| 广丰县| 察隅县| 抚顺市| 安陆市|