gpt4 book ai didi

javascript - 需要一些关于如何 BDD 一个简单的 url 解析器函数的建议

转载 作者:行者123 更新时间:2023-11-30 05:35:58 28 4
gpt4 key购买 nike

我正在使用 jasmine 在一个将 http 查询字符串转换为对象的简单函数上练习 BDD。

'a=b&c=d'   ->   {a: 'b', c: 'd'}

我能想到的是:

describe('queryParser', function() {
it('should return query object', function() {
expect(parseUrl('a=b')).toEqual({
a: 'b'
});

expect(parseUrl('a=b&c=d')).toEqual({
a: 'b',
c: 'd'
});

expect(parseUrl('&a=b&c=d')).toEqual({
a: 'b',
c: 'd'
});

expect(parseUrl('a=&c=d')).toEqual({
a: '',
c: 'd'
});

expect(parseUrl('')).toEqual({});
});
});

但我认为在一个测试用例中有太多断言(期望)。如果我正在编写 tdd,我可以将断言分为

testOneNameValuePair
testMultipleNameValuePairs
testNoNameValuePair

但是对于 BDD,我可以写一些像 should handle one name value pair case 这样的东西吗?这听起来微不足道而且很奇怪。有什么建议吗?

最佳答案

这真的是一个风格问题(因此也是意见,所以它可能不属于这里......)但我会写这样的东西:

it("should be an empty object when the query is empty", function() {
expect( parseUrl('') ).toEqual( {} );
});

it("should separate names from values with = sign"), function() {
expect( parseUrl('a=b') ).toEqual( { a: 'b' } );
});

it("should separate multiple pairs with & sign"), function() {
expect( parseUrl('a=b&c=d') ).toEqual( { a: 'b', c: 'd' } );
});

it("should ignore a leading & sign"), function() {
expect( parseUrl('&a=b&c=d') ).toEqual( { a: 'b', c: 'd' } );
});

it("should use empty string when a value is missing"), function() {
expect( parseUrl('a=') ).toEqual( { a: '' } );
});

我在这里要做的是确保我的规范名称不仅描述了条件,而且还描​​述了我希望代码在这些条件下执行的操作。

我只对您编写的实际断言做了一些小改动。我把空字符串的情况放在第一位,因为我经常用它作为我的第一个测试。另外,在缺少值的情况下,我放弃了第二对。我认为它与正在测试的内容无关,将其排除在外会使测试更易于阅读。不过,这些都是风格和个人品味的问题。

TL;DR:编写对您和您的同事有用的规范名称。别人的意见不重要。

关于javascript - 需要一些关于如何 BDD 一个简单的 url 解析器函数的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23822137/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com