Cli*_*iff 16 ruby iphone tdd objective-c
我正在试验iPhone SDK并做一些TDD ala Dr. Nic的rbiPhoneTest项目.我想知道有多少(如果有的话)成功使用这个或任何其他测试框架的iPhone/Cocoa?更重要的是,我想知道如何最好地断言专有的二进制请求/响应协议.想法是通过网络发送二进制请求并接收二进制响应.使用byte和'ing和oring创建请求和响应.我正在使用黄金副本模式来测试我的请求.这是我到目前为止所拥有的.不要笑,因为我是btoh Objective C和Ruby的新手:
require File.dirname(__FILE__) + '/test_helper'
require 'fileutils'
require 'io'
require "MyModel.bundle"
OSX::ns_import :MyModel
module MyTestExtensions
def is_absolute_path(path)
return /^\/.*/.match(path)
end
def parent_directory(file)
dir = file
if(! is_absolute_path(dir))
dir = File.expand_path(dir)
end
dir = File.dirname(dir)
assert is_absolute_path(dir), "Expecting an absolute path with #{dir}"
return dir
end
def assert_NSData_contains_bytes_from_file(file, data)
assert_not_nil data, "Data should not be nil."
assert data.bytes, "data should have bytes"
data.length.times { |i|
expected = file.getc
assert_not_nil expected, "Expected only #{i} bytes. Actual data contains more."
actual = data.bytes.int8_at(i)
assert_equal expected, actual, "Bytes should be equal at offset #{i} expected #{expected.chr} but was #{actual.chr}"
}
expected = file.getc
raise AssertionFailedError, "Expecting #{expected.chr} at offset #{data.length}" unless expected == nil
end
end
class TestMyModel < Test::Unit::TestCase
include OSX
include MyTestExtensions
def this_files_dir
return parent_directory(__FILE__)
end
def setup
@expectedReq = File.new("#{this_files_dir}/ExpectedMyReq")
# @expectedReq = File.new("#{this_files_dir}/hello.txt")
assert File.exist?("#{this_files_dir}/ExpectedMyReq"), "The file [#{@expectedReq.path}] should exist."
end
def test_my_model_class_exists
MyModel
end
def test_can_init_instance
assert MyModel.instancesRespondToSelector(:init), "MyModel Should define :init"
end
def test_my_model_can_request_my_data
myModel = MyModel.alloc.init
data = myModel.requestMyData 'Some query text'
assert_NSData_contains_bytes_from_file @expectedReq, data
end
end
Run Code Online (Sandbox Code Playgroud)
zou*_*oul 11
我对Ruby或二进制协议知之甚少,但如果您对iPhone上的单元测试感兴趣,可能需要查看Google Toolbox for Mac.我用它测试我的OpenGL ES应用程序非常成功.
Cliff,从长远来看,你最好投入纯粹的ObjC TDD工具.我已经成功地在fmdb-migration-manager中使用了我自己的rbiphonetest lib,但它的用处可能仅限于库等.即便如此,毫无疑问,"在Cocoa中工作但在UIKit中失败"的场景使rbiphonetest无法使用.希望有一天RubyCocoa可以针对英特尔UIKit库构建,然后我认为它非常有用且坚固.
| 归档时间: |
|
| 查看次数: |
9525 次 |
| 最近记录: |