Haxe에서 FizzBuzz TDD 시도

환경 구축



Haxe



IDE인 FlashDevelop을 설치합니다.

빈 프로젝트도 만들어 둡시다.

TDD



프로젝트 바로 아래로 이동하여 다음과 같이 진행합니다.

$ npm install -g coffee-script
...
$ npm install -g mocha
...
$ npm install expect.js --save-dev
...
$ npm install -g testem
...
$ mkdir test
$ touch test/fizzbuzztest.coffee
$ coffee -cw test/fizzbuzztest.coffee &

이제 fizzbuzztest.coffee가 업데이트되면 자동으로 JavaScript로 변환됩니다.

그런 다음 프로젝트 바로 아래에 testem.json이라는 파일을 만듭니다.

testem.json
{
  "framework": "mocha",
  "src_files": [
    "bin/*.js",
    "test/*test.js"
  ],
  "launchers": {
    "Mocha": {
      "command": "mocha test/*test.js -R tap",
      "protocol": "tap"
    }
  },
  "launch_in_dev": [
    "Mocha"
  ]
}

testem을 시작합니다.

$ testem

이제 Haxe로 컴파일하거나 테스트를 업데이트할 때 자동으로 테스트가 실행됩니다.

테스트 쓰기(레드)



미안하지만 갑자기 끝까지 씁니다.

fizzbuzztest.coffee
expect = require 'expect.js'
fizzbuzz   = require '../bin/FizzBuzz.js'

describe 'fizzbuzz', ->

    f = new fizzbuzz.FizzBuzz # スコープから出したクラスを参照する

    it 'return string Fizz when 3 is given', ->
        result = f.returnString( 3 )
        expect( result ).to.be( 'Fizz' )

    it 'return string 2 when 2 is given', ->
        result = f.returnString( 2 )
        expect( result ).to.be( '2' )

    it 'return string Buzz when 5 is given', ->
        result = f.returnString( 5 )
        expect( result ).to.be( 'Buzz' )

    it 'return string Fizz when 6 is given', ->
        result = f.returnString( 6 )
        expect( result ).to.be( 'Fizz' )

    it 'return string Buzz when 10 is given', ->
        result = f.returnString( 10 )
        expect( result ).to.be( 'Buzz' )

    it 'return string FizzBuzz when 15 is given', ->
        result = f.returnString( 15 )
        expect( result ).to.be( 'FizzBuzz' )

    it 'return string FizzBuzz when 15 is given', ->
        result = f.returnString( 30 )
        expect( result ).to.be( 'FizzBuzz' )

구현(그린)



FlashDevelop에서 FizzBuzz라는 클래스를 만듭니다.

FizzBuzz.hx
package ;

@:expose( "FizzBuzz" ) // テストから見えるように、クラスをスコープから出す
class FizzBuzz{

    public function new() {

    }

    public function returnString(n : Int) : String {
        if ( n % 15 == 0 ) {
            return "FizzBuzz";
        }
        else if ( n % 3 == 0 ) {
            return "Fizz";
        }
        else if ( n % 5 == 0 ) {
            return "Buzz";
        }
        else {
            return Std.string(n);
        }
    }
}

Main.hx
package ;

import js.Lib;

class Main {

    static function main() {
        var f = new FizzBuzz();
        for (i in 1...100) {
            var s : String = f.returnString( i );
            trace( s );
        }

    }

}

이것으로 완성입니다.



수업을 내는 곳이 다소 빠져나갔습니다.

말하자면 FizzBuzz는 무엇입니까? 라는 쪽은 구구 주세요. 붓 무정하고 죄송합니다.

블로그를하고 있습니다 : Weed Software

좋은 웹페이지 즐겨찾기